summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-09-27 00:38:35 +0000
committerKarl Berry <karl@freefriends.org>2010-09-27 00:38:35 +0000
commit6f75f25fe8d374ef4209118bd8849d742410ccd1 (patch)
treec485a2517a4fba54346c4492d4b34f0c8d815962
parent36e4bf755052bf5d5cef33cc2ffbad8f00b22163 (diff)
expl3 2047 (26sep10)
git-svn-id: svn://tug.org/texlive/trunk@19904 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/expl3/README17
-rw-r--r--Master/texmf-dist/doc/latex/expl3/expl3.pdfbin497961 -> 498282 bytes
-rw-r--r--Master/texmf-dist/doc/latex/expl3/l3calc.pdfbin377264 -> 377245 bytes
-rw-r--r--Master/texmf-dist/doc/latex/expl3/source3.pdfbin1506021 -> 0 bytes
-rw-r--r--Master/texmf-dist/source/latex/expl3/expl3.dtx6
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3basics.dtx174
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3box.dtx62
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3candidates.dtx53
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3clist.dtx4
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3doc.dtx4
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3expan.dtx56
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3fp.dtx10
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3int.dtx8
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3intexpr.dtx24
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3luatex.dtx26
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3names.dtx213
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3prg.dtx128
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3quark.dtx70
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3skip.dtx144
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3tl.dtx313
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3token.dtx50
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3toks.dtx6
-rw-r--r--Master/texmf-dist/tex/latex/expl3/expl3.sty3
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3basics.sty56
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3box.sty14
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3clist.sty4
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3doc.cls4
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3expan.sty30
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3fp.sty10
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3int.sty8
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3intexpr.sty22
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3luatex.sty19
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3names.sty58
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3prg.sty95
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3quark.sty57
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3skip.sty47
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3tl.sty201
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3token.sty50
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3toks.sty6
39 files changed, 1066 insertions, 986 deletions
diff --git a/Master/texmf-dist/doc/latex/expl3/README b/Master/texmf-dist/doc/latex/expl3/README
index 4dd5ab22aa2..b85c2442188 100644
--- a/Master/texmf-dist/doc/latex/expl3/README
+++ b/Master/texmf-dist/doc/latex/expl3/README
@@ -2,7 +2,7 @@
An Experimental LaTeX3 Programming Convention
=============================================
- 2010/08/18
+ 2010/09/21
WHERE TO GET IT
@@ -33,6 +33,21 @@ broadly stable. The syntax conventions and functions provided are now
ready for wider use. There may still be changes to some functions, but
these will be minor when compared to the scope of expl3.
+REQUIREMENTS
+------------
+
+The expl3 bundle requires the e-TeX extensions. It also uses the
+functionality of a small number of additional primitives. As a
+result, the bundle will only work with the following engines:
+
+ - pdfTeX v1.30 or later
+ - XeTeX v0.9994 or later
+ - LuaTeX v0.40 or later
+
+pdfTeX v1.30 was released in 2005, and so any recent TeX distribution
+will support expl3. Both XeTeX and LuaTeX have developed more
+actively over the past few years, and for this reason only recent
+releases of these engines are supported.
THE GUILTY PERSONS
------------------
diff --git a/Master/texmf-dist/doc/latex/expl3/expl3.pdf b/Master/texmf-dist/doc/latex/expl3/expl3.pdf
index a7bd9773f65..8c7f7fe94f8 100644
--- a/Master/texmf-dist/doc/latex/expl3/expl3.pdf
+++ b/Master/texmf-dist/doc/latex/expl3/expl3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/expl3/l3calc.pdf b/Master/texmf-dist/doc/latex/expl3/l3calc.pdf
index 652cce8cd20..ef753a4a9ff 100644
--- a/Master/texmf-dist/doc/latex/expl3/l3calc.pdf
+++ b/Master/texmf-dist/doc/latex/expl3/l3calc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/expl3/source3.pdf b/Master/texmf-dist/doc/latex/expl3/source3.pdf
deleted file mode 100644
index d3fa531e42a..00000000000
--- a/Master/texmf-dist/doc/latex/expl3/source3.pdf
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/source/latex/expl3/expl3.dtx b/Master/texmf-dist/source/latex/expl3/expl3.dtx
index 9657e07811e..72764aa2dff 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 2020 2010-09-14 10:37:46Z joseph $
+\GetIdInfo$Id: expl3.dtx 2022 2010-09-16 13:00:35Z joseph $
{L3 Experimental code bundle wrapper}%
%\iffalse
%<*driver>
@@ -861,9 +861,11 @@
% \end{macrocode}
%
% Load \pkg{etex} as otherwise we are likely to get into trouble
-% with registers.
+% with registers. Some inserts are reserved also as these have to
+% be from the standard pool.
% \begin{macrocode}
\RequirePackage{etex}
+\reserveinserts{32}
% \end{macrocode}
%
%\begin{macro}{\@l@expl@check@declarations@bool}
diff --git a/Master/texmf-dist/source/latex/expl3/l3basics.dtx b/Master/texmf-dist/source/latex/expl3/l3basics.dtx
index 4bfc83ec33b..61d3170170e 100644
--- a/Master/texmf-dist/source/latex/expl3/l3basics.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3basics.dtx
@@ -1,5 +1,5 @@
% \iffalse
-%% File: l3basics.dtx Copyright (C) 1990-2008 LaTeX3 project
+%% File: l3basics.dtx Copyright (C) 1990-2008,2010 LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -35,7 +35,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3basics.dtx 1992 2010-08-04 20:41:40Z joseph $
+\GetIdInfo$Id: l3basics.dtx 2037 2010-09-20 21:22:45Z joseph $
{L3 Experimental basic definitions}
%\iffalse
%<*driver>
@@ -344,6 +344,41 @@
% This function checks that <cs> is defined. If it is not an error
% is generated.
% \end{function}
+%
+%\begin{function}{
+% \str_if_eq_p:nn / (EXP) |
+% \str_if_eq_p:Vn / (EXP) |
+% \str_if_eq_p:on / (EXP) |
+% \str_if_eq_p:no / (EXP) |
+% \str_if_eq_p:nV / (EXP) |
+% \str_if_eq_p:VV / (EXP) |
+% \str_if_eq_p:xx / (EXP) |
+% \str_if_eq:nn / (EXP) (TF) |
+% \str_if_eq:Vn / (EXP) (TF) |
+% \str_if_eq:on / (EXP) (TF) |
+% \str_if_eq:no / (EXP) (TF) |
+% \str_if_eq:nV / (EXP) (TF) |
+% \str_if_eq:VV / (EXP) (TF) |
+% \str_if_eq:xx / (EXP) (TF) |
+%}
+% \begin{syntax}
+% \cs{str_if_eq_p:nn} \Arg{tl1} \Arg{tl2}
+% \cs{str_if_eq:nnTF} \Arg{tl1} \Arg{tl2} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Compares the two \meta{token lists} on a character by character
+% basis, and is \texttt{true} if the two lists contain the same
+% characters in the same order. Thus for example
+% \begin{verbatim}
+% \str_if_eq_p:xx { abc } { \tl_to_str:n { abc } }
+% \end{verbatim}
+% is logically \texttt{true}. The branching versions then leave either
+% \meta{true code} or \meta{false code} in the input stream, as
+% appropriate to the truth of the test and the variant of the function
+% chosen. The logical truth of the test is left in the input stream by
+% the predicate version. All versions of these functions are fully
+% expandable (including those involving an \texttt{x}-type
+% expansion).
+%\end{function}
%
% \begin{variable}{ \c_true_bool | \c_false_bool }
% \begin{syntax}
@@ -352,25 +387,6 @@
% implement predicates.
% \end{variable}
%
-% \subsection{Applications}
-%
-% \begin{function}{ \str_if_eq_p:nn / (EXP) }
-% \begin{syntax}
-% "\str_if_eq_p:nn" \Arg{string1} \Arg{string2}
-% \end{syntax}
-% Expands to `true' if <string1> is the same as <string2>,
-% otherwise `false'. Ignores spaces within the strings.
-% \end{function}
-%
-% \begin{function}{ \str_if_eq_var_p:nf / (EXP) }
-% \begin{syntax}
-% "\str_if_eq_var_p:nf" \Arg{string1} \Arg{string2}
-% \end{syntax}
-% A variant of "\str_if_eq_p:nn" which has the advantage of
-% obeying spaces in at least the second argument.
-% \end{function}
-%
-%
% \section{Control sequences}
%
% \begin{function}{ \cs:w / (EXP) | \cs_end: / (EXP) }
@@ -2036,13 +2052,13 @@
% like this (again getting TeX to remove the leading space for us):
% \begin{macrocode}
\cs_set_nopar:Npn \cs_to_str:N {
- \if:w \exp_after:wN \cs_str_aux:w\token_to_str:N \a ax\q_nil
+ \if:w \exp_after:wN \cs_str_aux:w\token_to_str:N \a ax\q_stop
\else:
\exp_after:wN \exp_after:wN\exp_after:wN \use_ii:nn
\fi:
\exp_after:wN \use_none:n \token_to_str:N
}
-\cs_set:Npn \cs_str_aux:w #1#2#3#4\q_nil{#2#3}
+\cs_set:Npn \cs_str_aux:w #1#2#3#4\q_stop{#2#3}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2077,7 +2093,7 @@
% \begin{macrocode}
\cs_set:Npn \cs_split_function:NN #1#2{
\exp_after:wN \cs_split_function_aux:w
- \tex_romannumeral:D -`\q \cs_to_str:N #1 @a \q_nil #2
+ \tex_romannumeral:D -`\q \cs_to_str:N #1 @a \q_stop #2
}
% \end{macrocode}
% If no colon in the name, |#2| is |a| with catcode 11 and |#3| is
@@ -2088,16 +2104,16 @@
% We can't use |\quark_if_no_value:NTF| yet but this is very safe
% anyway as all tokens have catcode~12.
% \begin{macrocode}
-\cs_set:Npn \cs_split_function_aux:w #1@#2#3\q_nil#4{
+\cs_set:Npn \cs_split_function_aux:w #1@#2#3\q_stop#4{
\if_meaning:w a#2
\exp_after:wN \use_i:nn
\else:
\exp_after:wN\use_ii:nn
\fi:
{#4{#1}{}\c_false_bool}
- {\cs_split_function_auxii:w#2#3\q_nil #4{#1}}
+ {\cs_split_function_auxii:w#2#3\q_stop #4{#1}}
}
-\cs_set:Npn \cs_split_function_auxii:w #1@a\q_nil#2#3{
+\cs_set:Npn \cs_split_function_auxii:w #1@a\q_stop#2#3{
#2{#3}{#1}\c_true_bool
}
% \end{macrocode}
@@ -2187,7 +2203,7 @@
\cs_split_function:NN #1 \cs_if_do_not_use_aux:nnN
}
\cs_set:Npn \cs_if_do_not_use_aux:nnN #1#2#3{
- \exp_after:wN\str_if_eq_p:nn \token_to_str:N D {#2}
+ \str_if_eq_p:nn { D } {#2}
}
% \end{macrocode}
% \end{macro}
@@ -2377,95 +2393,43 @@
% \end{macro}
% \end{macro}
%
-%
-% \begin{macro}{\str_if_eq_p:nn}
-% \begin{macro}[aux]{\str_if_eq_p_aux:w}
-% Takes 2 lists of characters as arguments and expands into
-% |\c_true_bool| if they are equal, and |\c_false_bool| otherwise. Note that
-% in the current implementation spaces in these strings are
-% ignored.\footnote{This is a function which could use
-% \cs{tlist_compare:xx}.}
+%\begin{macro}{\str_if_eq_p:nn}
+%\begin{macro}[TF]{\str_if_eq:nn}
+%\begin{macro}{\str_if_eq_p:xx}
+%\begin{macro}[TF]{\str_if_eq:xx}
+% Modern engines provide a direct way of comparing two token lists,
+% but returning a number. This set of conditionals therefore make life
+% a bit clearer. The \texttt{nn} and \texttt{xx} versions are created
+% directly as this is most efficient.
% \begin{macrocode}
-\prg_set_conditional:Npnn \str_if_eq:nn #1#2{p}{
- \str_if_eq_p_aux:w #1\scan_stop:\\#2\scan_stop:\\
+\prg_set_conditional:Npnn \str_if_eq:nn #1#2 { p , T , F , TF } {
+ \tex_ifnum:D \pdf_strcmp:D
+ { \etex_unexpanded:D {#1} } { \etex_unexpanded:D {#2} }
+ = \c_zero
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\prg_set_conditional:Npnn \str_if_eq:xx #1#2 { p , T , F , TF } {
+ \tex_ifnum:D \pdf_strcmp:D {#1} {#2} = \c_zero
+ \prg_return_true: \else: \prg_return_false: \fi:
}
-\cs_set_nopar:Npn \str_if_eq_p_aux:w #1#2\\#3#4\\{
- \if_meaning:w#1#3
- \if_meaning:w#1\scan_stop:\prg_return_true: \else:
- \if_meaning:w#3\scan_stop:\prg_return_false: \else:
- \str_if_eq_p_aux:w #2\\#4\\\fi:\fi:
- \else:\prg_return_false: \fi:}
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
%
% \begin{macro}{\cs_if_eq_name_p:NN}
% An application of the above function, already streamlined for
-% speed, so I put it in here. It takes two control sequences as
-% arguments and expands into true iff they have the same name.
-% We make it long in case one of them is |\par|!
+% speed, so I put it in here.
% \begin{macrocode}
\prg_set_conditional:Npnn \cs_if_eq_name:NN #1#2{p}{
- \exp_after:wN\exp_after:wN
- \exp_after:wN\str_if_eq_p_aux:w
- \exp_after:wN\token_to_str:N
- \exp_after:wN#1
- \exp_after:wN\scan_stop:
- \exp_after:wN\\
- \token_to_str:N#2\scan_stop:\\}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\str_if_eq_var_p:nf}
-% \begin{macro}[aux]{\str_if_eq_var_start:nnN}
-% \begin{macro}[aux]{\str_if_eq_var_stop:w}
-% A variant of |\str_if_eq_p:nn| which has the advantage of obeying
-% spaces in at least the second argument. See \textsf{l3quark} for
-% an application. From the hand of David Kastrup with slight
-% modifications to make it fit with the remainder of the expl3
-% language.
-%
-% The macro builds a string of |\if:w \fi:| pairs from the first
-% argument. The idea is to turn the comparison of |ab| and |cde|
-% into
-% \begin{verbatim}
-% \tex_number:D
-% \if:w \scan_stop: \if:w b\if:w a cde\scan_stop: '\fi: \fi: \fi:
-% 13
-% \end{verbatim}
-% The |'| is important here. If all tests are true, the |'| is read
-% as part of the number in which case the returned number is |13| in
-% octal notation so |\tex_number:D| returns |11|. If one test
-% returns false the |'| is never seen and then we get just |13|. We
-% wrap the whole process in an external |\if:w| in order to make it
-% return either |\c_true_bool| or |\c_false_bool| since some parts of
-% \textsf{l3prg} expect a predicate to return one of these two
-% tokens.
-% \begin{macrocode}
-\prg_set_conditional:Npnn \str_if_eq_var:nf #1#2 {p} {
- \if:w \tex_number:D\str_if_eq_var_start:nnN{}{}#1\scan_stop:{#2}
-}
-\cs_set_nopar:Npn\str_if_eq_var_start:nnN#1#2#3{
- \if:w#3\scan_stop:\exp_after:wN\str_if_eq_var_stop:w\fi:
- \str_if_eq_var_start:nnN{\if:w#3#1}{#2\fi:}
-}
-\cs_set:Npn\str_if_eq_var_stop:w\str_if_eq_var_start:nnN#1#2#3{
- #1#3\scan_stop:'#213~\prg_return_true:\else:\prg_return_false:\fi:
+ \str_if_eq_p:nn {#1} {#2}
}
% \end{macrocode}
% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-%
%
% \subsection{More new definitions}
%
-%
-%
-%
% \begin{macro}{\cs_new_nopar:Npn}
% \begin{macro}{\cs_new_nopar:Npx}
% \begin{macro}{\cs_new:Npn}
@@ -2857,11 +2821,11 @@
\fi:
{
\exp_after:wN \cs_get_arg_count_from_signature_auxii:w
- \use_none:nnnnnnnnn #2 9876543210\q_nil
+ \use_none:nnnnnnnnn #2 9876543210\q_stop
}
{-1}
}
-\cs_set:Npn \cs_get_arg_count_from_signature_auxii:w #1#2\q_nil{#1}
+\cs_set:Npn \cs_get_arg_count_from_signature_auxii:w #1#2\q_stop{#1}
% \end{macrocode}
% A variant form we need right away.
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/expl3/l3box.dtx b/Master/texmf-dist/source/latex/expl3/l3box.dtx
index 8da3021541b..0a3538bf73e 100644
--- a/Master/texmf-dist/source/latex/expl3/l3box.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3box.dtx
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3box.dtx 2015 2010-09-03 17:45:09Z mittelba $
+\GetIdInfo$Id: l3box.dtx 2044 2010-09-22 03:34:46Z will $
{L3 Experimental Box module}
%\iffalse
%<*driver>
@@ -250,6 +250,39 @@
% These are the \TeX{} primitives \tn{ht}, \tn{dp} and \tn{wd}.
% \end{texnote}
% \end{function}
+%
+%\begin{function}{
+% \box_set_dp:Nn |
+% \box_set_dp:cn |
+%}
+% \begin{syntax}
+% \cs{box_set_dp:Nn} \meta{box} \Arg{dimension expression}
+% \end{syntax}
+% Set the depth(below the baseline) of the \meta{box} to the value of
+% the \Arg{dimension expression}. This is a local assignment.
+%\end{function}
+%
+%\begin{function}{
+% \box_set_ht:Nn |
+% \box_set_ht:cn |
+%}
+% \begin{syntax}
+% \cs{box_set_ht:Nn} \meta{box} \Arg{dimension expression}
+% \end{syntax}
+% Set the height(above the baseline) of the \meta{box} to the value of
+% the \Arg{dimension expression}. This is a local assignment.
+%\end{function}
+%
+%\begin{function}{
+% \box_set_wd:Nn |
+% \box_set_wd:cn |
+%}
+% \begin{syntax}
+% \cs{box_set_wd:Nn} \meta{box} \Arg{dimension expression}
+% \end{syntax}
+% Set the width of the \meta{box} to the value of the
+% \Arg{dimension expression}. This is a local assignment.
+%\end{function}
%
% \begin{function}{%
% \box_show:N |
@@ -723,6 +756,33 @@
% \end{macro}
% \end{macro}
% \end{macro}
+%
+%\begin{macro}{\box_set_ht:Nn}
+%\begin{macro}{\box_set_ht:cn}
+%\begin{macro}{\box_set_wd:Nn}
+%\begin{macro}{\box_set_wd:cn}
+% Measuring is easy: all primitive work. These primitives are not
+% expandable, so the derived functions are not either.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \box_set_dp:Nn #1#2 {
+ \box_dp:N #1 \etex_dimexpr:D #2 \scan_stop:
+}
+\cs_new_protected_nopar:Npn \box_set_ht:Nn #1#2 {
+ \box_ht:N #1 \etex_dimexpr:D #2 \scan_stop:
+}
+\cs_new_protected_nopar:Npn \box_set_wd:Nn #1#2 {
+ \box_wd:N #1 \etex_dimexpr:D #2 \scan_stop:
+}
+\cs_generate_variant:Nn \box_set_ht:Nn { c }
+\cs_generate_variant:Nn \box_set_dp:Nn { c }
+\cs_generate_variant:Nn \box_set_wd:Nn { c }
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
%
% \begin{macro}{\box_use_clear:N,\box_use_clear:c}
% \begin{macro}{\box_use:N,\box_use:c}
diff --git a/Master/texmf-dist/source/latex/expl3/l3candidates.dtx b/Master/texmf-dist/source/latex/expl3/l3candidates.dtx
index 8051fb7f340..ba857b1a91e 100644
--- a/Master/texmf-dist/source/latex/expl3/l3candidates.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3candidates.dtx
@@ -1,5 +1,5 @@
% \iffalse
-%% File: l3candidates.dtx Copyright (C) 2005-2009 LaTeX3 project
+%% File: l3candidates.dtx Copyright (C) 2005-2010 LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -37,7 +37,7 @@
%</driver|package>
%\fi
\errorcontextlines=999
-\GetIdInfo$Id: l3candidates.dtx 1957 2010-06-15 06:33:43Z mittelba $
+\GetIdInfo$Id: l3candidates.dtx 2029 2010-09-19 13:59:02Z joseph $
{L3 Experimental 'extras' module}
%\iffalse
%<*driver>
@@ -75,7 +75,24 @@
% Beware, then, that loading this package and using its contents may cause your
% code to break down the track.
%
-% \section{Functions for functions}
+% \section{Functions for characters}
+%
+%
+% \begin{function}{\char_active_set:Npn|\char_active_gset:Npn}
+% \begin{syntax}
+% |\char_active_set:Npn|~<char>~<param>~<definition>
+% \end{syntax}
+% Makes <char> active and gives it the definition specified as if it were
+% a function.
+% \end{function}
+%
+% \begin{function}{\char_active_set_eq:NN|\char_active_gset_eq:NN}
+% \begin{syntax}
+% |\char_active_set:Npn|~<char>~<function>
+% \end{syntax}
+% Makes <char> active and makes it equal to <function>.
+% (Or another active char, etc.)
+% \end{function}
%
%
%
@@ -221,6 +238,32 @@
% \end{macrocode}
%
%
+% \begin{macro}{\char_active_set:Npn,\char_active_set:Npx,\char_active_gset:Npn,\char_active_gset:Npx}
+% \begin{macro}{\char_active_set_eq:NN,\char_active_gset_eq:NN}
+% \begin{macrocode}
+\group_begin:
+\char_make_active:N \^^@
+\cs_set:Npn \char_tmp:NN {
+ \cs_gnew:Npn #1 ##1 {
+ \char_make_active:n {`##1}
+ \group_begin:
+ \tex_lccode:D `\^^@ `##1
+ \tex_lowercase:D{\group_end: #2 ^^@}
+ }
+}
+\char_tmp:NN \char_active_set:Npn \cs_set:Npn
+\char_tmp:NN \char_active_set:Npx \cs_set:Npx
+\char_tmp:NN \char_active_gset:Npn \cs_gset:Npn
+\char_tmp:NN \char_active_gset:Npx \cs_gset:Npx
+\char_tmp:NN \char_active_set_eq:NN \cs_set_eq:NN
+\char_tmp:NN \char_active_gset_eq:NN \cs_gset_eq:NN
+\group_end:
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+%
% \begin{macro}{\tl_trim_spaces:n,\tl_trim_spaces:N}
% \begin{macrocode}
\cs_new:Npn \tl_trim_spaces:n #1 {
@@ -370,7 +413,7 @@
\prg_new_conditional:Nnn \clist_if_in_numrange:nn {TF,T,F} {
\bool_set_false:N \l_clist_numrange_bool
\clist_map_inline:nn {#2} {
- \_clist_numrange_parse:nw {#1} ##1 - \q_marker - \q_nil
+ \_clist_numrange_parse:nw {#1} ##1 - \q_nil - \q_stop
}
\bool_if:NTF \l_clist_numrange_bool \prg_return_true: \prg_return_false:
}
@@ -378,7 +421,7 @@
\bool_set_true:N \l_clist_numrange_bool
\clist_map_break:
}
-\cs_set:Npn \_clist_numrange_parse:nw #1 #2 - #3 - #4 \q_nil {
+\cs_set:Npn \_clist_numrange_parse:nw #1 #2 - #3 - #4 \q_stop {
\tl_if_empty:nTF {#4}{
\intexpr_compare:nT {#1=#2} {\_clist_numrange_success:}
}{
diff --git a/Master/texmf-dist/source/latex/expl3/l3clist.dtx b/Master/texmf-dist/source/latex/expl3/l3clist.dtx
index c3167477819..a7337d63b32 100644
--- a/Master/texmf-dist/source/latex/expl3/l3clist.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3clist.dtx
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3clist.dtx 1992 2010-08-04 20:41:40Z joseph $
+\GetIdInfo$Id: l3clist.dtx 2037 2010-09-20 21:22:45Z joseph $
{L3 Experimental comma separated lists}
%\iffalse
%<*driver>
@@ -1029,7 +1029,7 @@
\cs_new_protected:Npn \clist_remove_element_aux:NNn #1#2#3 {
\clist_clear:N \l_clist_remove_clist
\cs_set:Npn \clist_remove_element_aux:n ##1 {
- \tl_if_eq:nnF {#3} {##1} {
+ \str_if_eq:nnF {#3} {##1} {
\clist_put_right:Nn \l_clist_remove_clist {##1}
}
}
diff --git a/Master/texmf-dist/source/latex/expl3/l3doc.dtx b/Master/texmf-dist/source/latex/expl3/l3doc.dtx
index 87bc748fb72..ae52fcdcc3d 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 2004 2010-08-18 19:39:24Z joseph $
+\GetIdInfo$Id: l3doc.dtx 2037 2010-09-20 21:22:45Z joseph $
{L3 Experimental documentation class}
%</driver|class>
%
@@ -807,7 +807,7 @@ Do not distribute a modified version of this file.
\cs_set_nopar:Npn \doc_showmacro_aux_ii:w #1:#2:#3 \q_stop {
\nextnewline
- \tl_if_eq:xxTF {#1} {\g_doc_macro_tl} {
+ \str_if_eq:xxTF {#1} {\g_doc_macro_tl} {
\doc_typeset_aux:n
}{
\tl_gset:Nn \g_doc_macro_tl {#1}
diff --git a/Master/texmf-dist/source/latex/expl3/l3expan.dtx b/Master/texmf-dist/source/latex/expl3/l3expan.dtx
index 270c9758238..ca4c7d5acb9 100644
--- a/Master/texmf-dist/source/latex/expl3/l3expan.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3expan.dtx
@@ -1,5 +1,5 @@
% \iffalse
-%% File: l3expan.dtx Copyright (C) 1990-2009 LaTeX3 project
+%% File: l3expan.dtx Copyright (C) 1990-2010 LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3expan.dtx 1991 2010-08-04 19:49:35Z joseph $
+\GetIdInfo$Id: l3expan.dtx 2037 2010-09-20 21:22:45Z joseph $
{L3 Experimental Argument Expansion module}
%\iffalse
%<*driver>
@@ -1077,15 +1077,15 @@
\cs_new_nopar:Npn \_cs_generate_variant_aux:Ncpx #1
{
\exp_after:wN \_cs_generate_variant_aux:w
- \tex_meaning:D #1 ? PROTECTEZ \q_nil
+ \tex_meaning:D #1 ? PROTECTEZ \q_stop
}
\cs_new_nopar:Npn \_cs_generate_variant_aux:ccpx
{ \exp_args:Nc \_cs_generate_variant_aux:Ncpx}
\cs_new:Npn \_cs_generate_variant_aux:w
- #1 ? PROTECTEZ #2 \q_nil
+ #1 ? PROTECTEZ #2 \q_stop
{
\exp_after:wN \tex_ifx:D \exp_after:wN
- \q_nil \etex_detokenize:D {#1} \q_nil
+ \q_no_value \etex_detokenize:D {#1} \q_no_value
\exp_after:wN \cs_new_protected_nopar:cpx
\tex_else:D
\exp_after:wN \cs_new_nopar:cpx
@@ -1207,6 +1207,52 @@
%\end{macro}
%\end{macro}
%
+%\subsection{Items held from earlier}
+%
+%\begin{macro}{\str_if_eq_p:Vn}
+%\begin{macro}[TF]{\str_if_eq:Vn}
+%\begin{macro}{\str_if_eq_p:on}
+%\begin{macro}[TF]{\str_if_eq:on}
+%\begin{macro}{\str_if_eq_p:nV}
+%\begin{macro}[TF]{\str_if_eq:nV}
+%\begin{macro}{\str_if_eq_p:no}
+%\begin{macro}[TF]{\str_if_eq:no}
+%\begin{macro}{\str_if_eq_p:VV}
+%\begin{macro}[TF]{\str_if_eq:VV}
+% These cannot come earlier as they need \cs{cs_generate_variant:Nn}.
+% \begin{macrocode}
+\cs_generate_variant:Nn \str_if_eq_p:nn { V }
+\cs_generate_variant:Nn \str_if_eq_p:nn { o }
+\cs_generate_variant:Nn \str_if_eq_p:nn { nV }
+\cs_generate_variant:Nn \str_if_eq_p:nn { no }
+\cs_generate_variant:Nn \str_if_eq_p:nn { VV }
+\cs_generate_variant:Nn \str_if_eq:nnT { V }
+\cs_generate_variant:Nn \str_if_eq:nnT { o }
+\cs_generate_variant:Nn \str_if_eq:nnT { nV }
+\cs_generate_variant:Nn \str_if_eq:nnT { no }
+\cs_generate_variant:Nn \str_if_eq:nnT { VV }
+\cs_generate_variant:Nn \str_if_eq:nnF { V }
+\cs_generate_variant:Nn \str_if_eq:nnF { o }
+\cs_generate_variant:Nn \str_if_eq:nnF { nV }
+\cs_generate_variant:Nn \str_if_eq:nnF { no }
+\cs_generate_variant:Nn \str_if_eq:nnF { VV }
+\cs_generate_variant:Nn \str_if_eq:nnTF { V }
+\cs_generate_variant:Nn \str_if_eq:nnTF { o }
+\cs_generate_variant:Nn \str_if_eq:nnTF { nV }
+\cs_generate_variant:Nn \str_if_eq:nnTF { no }
+\cs_generate_variant:Nn \str_if_eq:nnTF { VV }
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
% \begin{macrocode}
%</initex|package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/expl3/l3fp.dtx b/Master/texmf-dist/source/latex/expl3/l3fp.dtx
index 54013130760..9d9a06d7272 100644
--- a/Master/texmf-dist/source/latex/expl3/l3fp.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3fp.dtx
@@ -35,7 +35,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3fp.dtx 2021 2010-09-14 15:59:54Z joseph $
+\GetIdInfo$Id: l3fp.dtx 2029 2010-09-19 13:59:02Z joseph $
{L3 Experimental floating-point operations}
%\iffalse
%<*driver>
@@ -1058,23 +1058,23 @@
}
\cs_new_protected_nopar:Npn \fp_split_sign: {
\tex_ifnum:D \pdf_strcmp:D
- { \exp_after:wN \tl_head:w \l_fp_tmp_tl ? \q_nil } { - }
+ { \exp_after:wN \tl_head:w \l_fp_tmp_tl ? \q_stop } { - }
= \c_zero
\tl_set:Nx \l_fp_tmp_tl
{
\exp_after:wN
- \tl_tail:w \l_fp_tmp_tl \prg_do_nothing: \q_nil
+ \tl_tail:w \l_fp_tmp_tl \prg_do_nothing: \q_stop
}
\l_fp_split_sign_int -\l_fp_split_sign_int
\exp_after:wN \fp_split_sign:
\tex_else:D
\tex_ifnum:D \pdf_strcmp:D
- { \exp_after:wN \tl_head:w \l_fp_tmp_tl ? \q_nil } { + }
+ { \exp_after:wN \tl_head:w \l_fp_tmp_tl ? \q_stop } { + }
= \c_zero
\tl_set:Nx \l_fp_tmp_tl
{
\exp_after:wN
- \tl_tail:w \l_fp_tmp_tl \prg_do_nothing: \q_nil
+ \tl_tail:w \l_fp_tmp_tl \prg_do_nothing: \q_stop
}
\exp_after:wN \exp_after:wN \exp_after:wN
\fp_split_sign:
diff --git a/Master/texmf-dist/source/latex/expl3/l3int.dtx b/Master/texmf-dist/source/latex/expl3/l3int.dtx
index ae9c1cae3bc..10305ee5fe1 100644
--- a/Master/texmf-dist/source/latex/expl3/l3int.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3int.dtx
@@ -1,5 +1,5 @@
% \iffalse
-%% File: l3int.dtx Copyright (C) 1990-2009 LaTeX3 project
+%% File: l3int.dtx Copyright (C) 1990-2010 LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3int.dtx 1933 2010-05-25 00:26:38Z will $
+\GetIdInfo$Id: l3int.dtx 2029 2010-09-19 13:59:02Z joseph $
{L3 Experimental Integer module}
%\iffalse
%<*driver>
@@ -1153,7 +1153,7 @@
% This is an intermediate function to get things started.
% \begin{macrocode}
\cs_new_nopar:Npn \int_convert_to_base_ten_aux:nn #1#2{
- \int_convert_to_base_ten_auxi:nnN {0}{#2} #1 \q_nil
+ \int_convert_to_base_ten_auxi:nnN {0}{#2} #1 \q_no_value
}
% \end{macrocode}
% Here we check each letter/digit and calculate the next number. |#1|
@@ -1161,7 +1161,7 @@
% |#2| is the base and |#3| is the next letter/digit to be added.
% \begin{macrocode}
\cs_new_nopar:Npn \int_convert_to_base_ten_auxi:nnN#1#2#3{
- \quark_if_nil:NTF #3
+ \quark_if_no_value:NTF #3
{#1}
{\exp_args:Nf\int_convert_to_base_ten_auxi:nnN
{\intexpr_eval:n{ #1*#2+\int_convert_letter_to_number:N #3} }
diff --git a/Master/texmf-dist/source/latex/expl3/l3intexpr.dtx b/Master/texmf-dist/source/latex/expl3/l3intexpr.dtx
index 71801f8780d..d791e7ca02b 100644
--- a/Master/texmf-dist/source/latex/expl3/l3intexpr.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3intexpr.dtx
@@ -1,5 +1,5 @@
% \iffalse
-%% File: l3intexpr.dtx Copyright (C) 2009 LaTeX3 project
+%% File: l3intexpr.dtx Copyright (C) 2009-2010 LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3intexpr.dtx 1957 2010-06-15 06:33:43Z mittelba $
+\GetIdInfo$Id: l3intexpr.dtx 2045 2010-09-22 03:59:34Z will $
{L3 Integer Expressions}
%\iffalse
%<*driver>
@@ -104,7 +104,7 @@
% \begin{center}
% \begin{tabular}{ll@{\hspace{2cm}}ll}
% Less than & "<" & Less than or equal & "<=" \\
-% Greater than & "<" & Greater than or equal & ">=" \\
+% Greater than & ">" & Greater than or equal & ">=" \\
% Equal & "==" or "=" & Not equal & "!="
% \end{tabular}
% \end{center}
@@ -392,7 +392,7 @@
% \begin{macrocode}
\cs_set:Npn \intexpr_compare_auxi:w #1#2\q_stop{
\exp_after:wN \intexpr_compare_auxii:w \tex_romannumeral:D
- \if:w #1- \else: -\fi: #1#2 \q_stop #1#2 \q_nil
+ \if:w #1- \else: -\fi: #1#2 \q_mark #1#2 \q_stop
}
% \end{macrocode}
% This leaves the first relation symbol in front and assuming the
@@ -402,7 +402,7 @@
% check if that is present as well. Then use specific function to
% perform the test.
% \begin{macrocode}
-\cs_set:Npn \intexpr_compare_auxii:w #1#2#3\q_stop{
+\cs_set:Npn \intexpr_compare_auxii:w #1#2#3\q_mark{
\use:c{
intexpr_compare_
#1 \if_meaning:w =#2 = \fi:
@@ -413,7 +413,7 @@
% relation as delimiter for a delimited argument.
% Equality is easy:
% \begin{macrocode}
-\cs_set:cpn {intexpr_compare_=:w} #1=#2\q_nil{
+\cs_set:cpn {intexpr_compare_=:w} #1=#2\q_stop{
\if_intexpr_compare:w #1=\intexpr_eval:w #2 \intexpr_eval_end:
\prg_return_true: \else: \prg_return_false: \fi:
}
@@ -421,25 +421,25 @@
% So is the one using |==| -- we just have to use |==| in the
% parameter text.
% \begin{macrocode}
-\cs_set:cpn {intexpr_compare_==:w} #1==#2\q_nil{
+\cs_set:cpn {intexpr_compare_==:w} #1==#2\q_stop{
\if_intexpr_compare:w #1=\intexpr_eval:w #2 \intexpr_eval_end:
\prg_return_true: \else: \prg_return_false: \fi:
}
% \end{macrocode}
% Not equal is just about reversing the truth value.
% \begin{macrocode}
-\cs_set:cpn {intexpr_compare_!=:w} #1!=#2\q_nil{
+\cs_set:cpn {intexpr_compare_!=:w} #1!=#2\q_stop{
\if_intexpr_compare:w #1=\intexpr_eval:w #2 \intexpr_eval_end:
\prg_return_false: \else: \prg_return_true: \fi:
}
% \end{macrocode}
% Less than and greater than are also straight forward.
% \begin{macrocode}
-\cs_set:cpn {intexpr_compare_<:w} #1<#2\q_nil{
+\cs_set:cpn {intexpr_compare_<:w} #1<#2\q_stop{
\if_intexpr_compare:w #1<\intexpr_eval:w #2 \intexpr_eval_end:
\prg_return_true: \else: \prg_return_false: \fi:
}
-\cs_set:cpn {intexpr_compare_>:w} #1>#2\q_nil{
+\cs_set:cpn {intexpr_compare_>:w} #1>#2\q_stop{
\if_intexpr_compare:w #1>\intexpr_eval:w #2 \intexpr_eval_end:
\prg_return_true: \else: \prg_return_false: \fi:
}
@@ -447,11 +447,11 @@
% 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{
+\cs_set:cpn {intexpr_compare_<=:w} #1<=#2\q_stop{
\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{
+\cs_set:cpn {intexpr_compare_>=:w} #1>=#2\q_stop{
\if_intexpr_compare:w #1<\intexpr_eval:w #2 \intexpr_eval_end:
\prg_return_false: \else: \prg_return_true: \fi:
}
diff --git a/Master/texmf-dist/source/latex/expl3/l3luatex.dtx b/Master/texmf-dist/source/latex/expl3/l3luatex.dtx
index 471c573efd3..96ab4c8bab7 100644
--- a/Master/texmf-dist/source/latex/expl3/l3luatex.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3luatex.dtx
@@ -394,32 +394,6 @@
%\end{macro}
%\end{macro}
%\end{macro}
-%
-%\begin{macro}{\ExplSyntaxOn}
-% When using \LuaTeX, \cs{ExplSyntaxOn} can be redefined to used category
-% code tables.
-% \begin{macrocode}
-\luatex_if_engine:T {
- \cs_set_protected_nopar:Npn \ExplSyntaxOn
- {
- \tex_ifodd:D \ExplSyntaxStatus \scan_stop:
- \tex_else:D
- \cs_set_protected_nopar:Npx \ExplSyntaxOff
- {
- \cctab_end:
- \tex_endlinechar:D =
- \tex_the:D \tex_endlinechar:D \scan_stop:
- \cs_set_protected:Npn \ExplSyntaxOff { }
- \tl_set:Nn \exp_not:N \ExplSyntaxStatus { 0 }
- }
- \tl_set:Nn \ExplSyntaxStatus { 1 }
- \cctab_begin:N \c_code_cctab
- \tex_endlinechar:D = 32 \scan_stop:
- \tex_fi:D
- }
-}
-% \end{macrocode}
-%\end{macro}
%
% \begin{macrocode}
%</initex|package>
diff --git a/Master/texmf-dist/source/latex/expl3/l3names.dtx b/Master/texmf-dist/source/latex/expl3/l3names.dtx
index 659cf399330..22df0db9821 100644
--- a/Master/texmf-dist/source/latex/expl3/l3names.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3names.dtx
@@ -1,5 +1,5 @@
% \iffalse
-%% File: l3names.dtx Copyright (C) 1990-2006,2009 LaTeX3 project
+%% File: l3names.dtx Copyright (C) 1990-2006,2009-2010 LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,44 +31,19 @@
%% prior consultation with the LaTeX Project Team.
%%
%% -----------------------------------------------------------------------
-%^^A We need some basic initial character codes to be set up
-%^^A immediately.
+%
+%^^A At least at the moment this code is needed as the code proper
+%^^A starts with \GetInfoId
%<*initex>
\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 % circumflex is superscript character
\catcode`\^^I=10 % ascii tab is a blank space
-% Make \pdfstrcmp available in luatex
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname directlua\endcsname\relax
-\else
- \directlua
- {
- tex.enableprimitives('',tex.extraprimitives ())
- lua.bytecode[1]=function ()
- function pdfstrcmp (A, B)
- if A == B then
- tex.write("0")
- elseif A < B then
- tex.write("-1")
- else
- tex.write("1")
- end
- end
- end
- lua.bytecode[1]()
- }
- \everyjob{\directlua{lua.bytecode[1]()}}
- \long\def\pdfstrcmp#1#2{%
- \directlua
- {pdfstrcmp("\luaescapestring{#1}","\luaescapestring{#2}")}%
- }
-\fi
%</initex>
%<package>\begingroup
%<*initex|package>
-\protected\def\GetIdInfo$#1${%
+\def\GetIdInfo$#1${%
\begingroup
\def\GetIdInfoString{#1}%
\def\IdInfoStringUnexp{Id}%
@@ -79,10 +54,10 @@
\fi
\next
}
-\protected\def\GetIdInfoFull$#1 #2.#3 #4 #5 #6 #7${%
+\def\GetIdInfoFull$#1 #2.#3 #4 #5 #6 #7${%
\GetIdInfoAux #5\relax{#2}#5\relax{#4}%
}
-\protected\def\GetIdInfoAux #1#2#3#4#5#6\relax{%
+\def\GetIdInfoAux #1#2#3#4#5#6\relax{%
\ifx#5/%
\expandafter\GetIdInfoAuxCVS
\else
@@ -91,13 +66,13 @@
}
%</initex|package>
%<*initex>
-\protected\def\GetIdInfoAuxCVS #1#2\relax#3#4{%
+\def\GetIdInfoAuxCVS #1#2\relax#3#4{%
\immediate\write-1{#1; v#2, #3; #4}%
}
-\protected\def\GetIdInfoAuxSVN #1#2-#3-#4\relax#5#6{%
+\def\GetIdInfoAuxSVN #1#2-#3-#4\relax#5#6{%
\immediate\write-1{#1; #2/#3/#4 v#5 #6}%
}
-\protected\def\GetIdInfoMissing#1{%
+\def\GetIdInfoMissing#1{%
\gdef\fileversion{000}%
\gdef\filedate{0000/00/00}%
\gdef\filedescription{#1}%
@@ -105,19 +80,19 @@
}
%</initex>
%<*package>
-\protected\def\GetIdInfoAuxCVS #1#2\relax#3#4{%
+\def\GetIdInfoAuxCVS #1#2\relax#3#4{%
\gdef\fileversion{#3}%
\gdef\filedate{#2}%
\gdef\filedescription{#4}%
\ProvidesPackage{#1}[#2 v#3 #4]%
}
-\protected\def\GetIdInfoAuxSVN #1#2-#3-#4\relax#5#6{%
+\def\GetIdInfoAuxSVN #1#2-#3-#4\relax#5#6{%
\gdef\fileversion{#5}%
\gdef\filedate{#2/#3/#4}%
\gdef\filedescription{#6}%
\ProvidesPackage{#1}[#2/#3/#4 v#5 #6]
}
-\protected\def\GetIdInfoMissing#1{%
+\def\GetIdInfoMissing#1{%
\gdef\fileversion{000}%
\gdef\filedate{0000/00/00}%
\gdef\filedescription{#1}%
@@ -128,20 +103,17 @@
\RequirePackage{l3names}
%</driver>
%\fi
-\GetIdInfo$Id: l3names.dtx 1987 2010-07-25 14:55:46Z joseph $
+\GetIdInfo$Id: l3names.dtx 2034 2010-09-20 20:17:43Z joseph $
{L3 Experimental Naming Scheme for TeX Primitives}
-%
-%
-% \iffalse
%<package>\endgroup
%<*driver>
%\fi
-\ProvidesFile{l3names.dtx}
+\ProvidesFile{\filename.\filenameext}
[\filedate\space v\fileversion\space\filedescription]
%\iffalse
\documentclass[full]{l3doc}
\begin{document}
-\DocInput{l3names.dtx}
+ \DocInput{\filename.\filenameext}
\end{document}
%</driver>
% \fi
@@ -272,40 +244,76 @@
% \begin{function}{\@pushfilename | \@popfilename}
% Re-definitions of \LaTeX's file-loading functions to support "\ExplSyntax".
% \end{function}
+%
+%\subsection{Bootstrap code}
%
-% \subsection{Package loading}
+% The very first thing to do is to bootstrap the \IniTeX\ system so
+% that everything else will actually work. \TeX\ does not start with
+% some pretty basic character codes set up.
+% \begin{macrocode}
+%<*!package>
+\catcode `\{ = 1 \relax
+\catcode `\} = 2 \relax
+\catcode `\# = 6 \relax
+\catcode `\^ = 7 \relax
+%</!package>
+% \end{macrocode}
%
-% Before anything else, check that we're using \eTeX;
-% no point continuing otherwise.
+% Tab characters should not show up in the code, but to be on the
+% safe side.
% \begin{macrocode}
-%<*initex|package>
-\begingroup
-\def\firstoftwo#1#2{#1}
-\def\secondoftwo#1#2{#2}
-\def\etexmissingerror{Not running under e-TeX}
-\def\etexmissinghelp{%
- This package requires e-TeX.^^J%
- Try compiling the document with `elatex' instead of `latex'.^^J%
- When using pdfTeX, try `pdfelatex' instead of `pdflatex'%
-}%
-\expandafter\ifx\csname eTeXversion\endcsname\relax
- \expandafter\secondoftwo\else\expandafter\firstoftwo\fi
- {\endgroup}{%
-%<initex> \expandafter\errhelp\expandafter{\etexmissinghelp}%
-%<initex> \expandafter\errmessage\expandafter{\etexmissingerror}%
-%<package> \PackageError{l3names}{\etexmissingerror}{\etexmissinghelp}%
- \endgroup
- \endinput
+%<*!package>
+\catcode `\^^I = 10 \relax
+%</!package>
+% \end{macrocode}
+%
+% For \LuaTeX\ the extra primitives need to be enabled before
+% they can be use. No \cs{ifdefined} yet, so do it the old-fashioned
+% way. The primitive \cs{strcmp} is simulated using some \Lua\
+% code, which currently has to be applied to every job as the \Lua\
+% code is not part of the format. Thanks to Taco Hoekwater for this
+% code. The odd \cs{csname} business is needed so that the later
+% deletion code will work.
+% \begin{macrocode}
+%<*!package>
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname directlua\endcsname\relax
+\else
+ \directlua
+ {
+ tex.enableprimitives('',tex.extraprimitives ())
+ lua.bytecode[1] = function ()
+ function strcmp (A, B)
+ if A == B then
+ tex.write("0")
+ elseif A < B then
+ tex.write("-1")
+ else
+ tex.write("1")
+ end
+ end
+ end
+ lua.bytecode[1]()
}
-%</initex|package>
+ \everyjob\expandafter
+ {\csname tex_directlua:D\endcsname{lua.bytecode[1]()}}
+ \long\edef\pdfstrcmp#1#2%
+ {%
+ \expandafter\noexpand\csname tex_directlua:D\endcsname
+ {%
+ strcmp(%
+ "\noexpand\luaescapestring{#1}",%
+ "\noexpand\luaescapestring{#2}"%
+ )%
+ }%
+ }
+\fi
+%</!package>
% \end{macrocode}
-%
-%\subsection{Lua\TeX\ work}
-%
-% When being used as a package, managing some Lua\TeX\ primitives has to
-% work correctly with other packages. This is done by loading the
-% \pkg{luatex} package and making the appropriate adjustments.
+% When loaded as a package this can all be handed off to other
+% \LaTeXe\ code.
% \begin{macrocode}
+%<*package>
\def\@tempa{%
\def\@tempa{}%
\RequirePackage{luatex}%
@@ -317,8 +325,61 @@
\else
\expandafter\@tempa
\fi
+%</package>
+% \end{macrocode}
+%
+% \XeTeX\ calls the primitive \cs{strcmp}, so there needs to be a
+% check for that too.
+% \begin{macrocode}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+ \ifx\csname pdfstrcmp\endcsname\relax
+ \let\pdfstrcmp\strcmp
+\fi
% \end{macrocode}
%
+%\subsection{Requirements}
+%
+% Currently, the code requires the \eTeX\ primitives and functionality
+% equivalent to \cs{pdfstrcmp}. Any package which provides the later
+% will provide the former, so the test can be done only for
+% \cs{pdfstrcmp}.
+% \begin{macrocode}
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\ifx\csname pdfstrcmp\endcsname\relax
+%<*package>
+ \PackageError{l3names}{Required primitives not found}
+ {%
+ LaTeX3 requires the e-TeX primitives and
+ \string\pdfstrcmp.\MessageBreak
+ These are available in engine versions: \MessageBreak
+ - pdfTeX 1.30 \MessageBreak
+ - XeTeX 0.9994 \MessageBreak
+ - LuaTeX 0.60 \MessageBreak
+ or later. \MessageBreak
+ \MessageBreak
+ Loading of l3names will abort!
+ }
+%</package>
+%<*!package>
+ \newlinechar`\^^J\relax
+ \errhelp{%
+ LaTeX3 requires the e-TeX primitives and
+ \string\pdfstrcmp. ^^J
+ These are available in engine versions: ^^J
+ - pdfTeX 1.30 ^^J
+ - XeTeX 0.9994 ^^J
+ - LuaTeX 0.60 ^^J
+ or later. ^^J
+ For pdfTeX and XeTeX the '-etex' command-line switch is also
+ needed.^^J
+ ^^J
+ Format building will abort!
+ }
+%</!package>
+ \expandafter\endinput
+\fi
+% \end{macrocode}
+%
% \subsection{Catcode assignments}
%
% Catcodes for begingroup, endgroup, macro parameter, superscript, and tab,
@@ -1024,7 +1085,7 @@
\tex_endlinechar:D =32 \tex_relax:D % endline is space
\tex_catcode:D 95=11 \tex_relax:D % underscore letter
\tex_catcode:D 58=11 \tex_relax:D % colon letter
- \tex_catcode:D 124=11 \tex_relax:D % vertical bar, other
+ \tex_catcode:D 124=12 \tex_relax:D % vertical bar, other
\tex_catcode:D 38=4 \tex_relax:D % ampersand, alignment token
\tex_catcode:D 94=7 \tex_relax:D % caret, math superscript
\tex_catcode:D 34=12 \tex_relax:D % doublequote, other
@@ -1176,7 +1237,7 @@
% as the packages in this distribution do like this:
% \begin{verbatim}
% \RequirePackage{l3names}
-% \GetIdInfo$Id: l3names.dtx 1987 2010-07-25 14:55:46Z joseph $
+% \GetIdInfo$Id: l3names.dtx 2034 2010-09-20 20:17:43Z joseph $
% {L3 Experimental Box module}
% \ProvidesExplPackage
% {\filename}{\filedate}{\fileversion}{\filedescription}
@@ -1279,7 +1340,7 @@
\tex_if:D 2\ExplSyntaxStack 2
\ExplSyntaxOff
\tex_else:D
- \tex_expandafter:D\ExplSyntaxPopStack\ExplSyntaxStack\q_nil
+ \tex_expandafter:D\ExplSyntaxPopStack\ExplSyntaxStack\q_stop
\tex_fi:D
}
}
@@ -1294,7 +1355,7 @@
% stack is initially empty set to 0 signalling that before
% \pkg{l3names} was loaded, the ExplSyntax was off.
% \begin{macrocode}
-\etex_protected:D\tex_def:D\ExplSyntaxPopStack#1#2\q_nil{
+\etex_protected:D\tex_def:D\ExplSyntaxPopStack#1#2\q_stop{
\tex_def:D\ExplSyntaxStack{#2}
\tex_ifodd:D#1\tex_relax:D
\ExplSyntaxOn
diff --git a/Master/texmf-dist/source/latex/expl3/l3prg.dtx b/Master/texmf-dist/source/latex/expl3/l3prg.dtx
index 29dcded112d..09e841f9543 100644
--- a/Master/texmf-dist/source/latex/expl3/l3prg.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3prg.dtx
@@ -1,5 +1,5 @@
% \iffalse
-%% File: l3prg.dtx Copyright (C) 2005-2009 LaTeX3 project
+%% File: l3prg.dtx Copyright (C) 2005-2010 LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3prg.dtx 1992 2010-08-04 20:41:40Z joseph $
+\GetIdInfo$Id: l3prg.dtx 2043 2010-09-22 02:10:43Z will $
{L3 Experimental control structures}
%\iffalse
%<*driver>
@@ -1269,7 +1269,7 @@
% this we call the Stop operation, denoted simply by a "S"
% following the last Close operation.
% \begin{macrocode}
-\cs_set:Npn \bool_if_p:n #1{
+\cs_new:Npn \bool_if_p:n #1{
\group_align_safe_begin:
\bool_get_next:N ( #1 )S
}
@@ -1277,7 +1277,7 @@
% The GetNext operation. We make it a switch: If not a "!" or "(", we
% assume it is a predicate.
% \begin{macrocode}
-\cs_set:Npn \bool_get_next:N #1{
+\cs_new:Npn \bool_get_next:N #1{
\use:c {
bool_
\if_meaning:w !#1 ! \else: \if_meaning:w (#1 ( \else: p \fi: \fi:
@@ -1285,25 +1285,77 @@
} #1
}
% \end{macrocode}
+% This variant gets called when a \textsc{not} has just been entered.
+% It (eventually) results in a reveral of the logic of the directly following
+% material.
+% \begin{macrocode}
+\cs_new:Npn \bool_get_not_next:N #1{
+ \use:c {
+ bool_not_
+ \if_meaning:w !#1 ! \else: \if_meaning:w (#1 ( \else: p \fi: \fi:
+ :w
+ } #1
+}
+% \end{macrocode}
+% We need these later on to nullify the unity operation |!!|.
+% \begin{macrocode}
+\cs_new:Npn \bool_get_next:NN #1#2{
+ \bool_get_next:N #2
+}
+\cs_new:Npn \bool_get_not_next:NN #1#2{
+ \bool_get_not_next:N #2
+}
+% \end{macrocode}
% The Not operation. Discard the token read and reverse the truth
-% value of the next expression using "\intexpr_if_even_p:n" if there
-% are brackets, otherwise reverse the logic here and now.
+% value of the next expression if there
+% are brackets; otherwise
+% if we're coming up to a |!| then we don't need to reverse anything
+% (but we then want to continue scanning ahead in case some fool has written
+% |!!(...)|);
+% otherwise we have a boolean that we can reverse here and now.
% \begin{macrocode}
-\cs_set:cpn { bool_!:w } #1#2 {
+\cs_new:cpn { bool_!:w } #1#2 {
\if_meaning:w ( #2
\exp_after:wN \bool_Not:w
\else:
\if_meaning:w ! #2
- \exp_after:wN \exp_after:wN \exp_after:wN \use_none:n
+ \exp_after:wN \exp_after:wN \exp_after:wN \bool_get_next:NN
\else:
\exp_after:wN \exp_after:wN \exp_after:wN \bool_Not:N
\fi:
\fi:
#2
}
+% \end{macrocode}
+% Variant called when already inside a \textsc{not}.
+% Essentially the opposite of the above.
+% \begin{macrocode}
+\cs_new:cpn { bool_not_!:w } #1#2 {
+ \if_meaning:w ( #2
+ \exp_after:wN \bool_not_Not:w
+ \else:
+ \if_meaning:w ! #2
+ \exp_after:wN \exp_after:wN \exp_after:wN \bool_get_not_next:NN
+ \else:
+ \exp_after:wN \exp_after:wN \exp_after:wN \bool_not_Not:N
+ \fi:
+ \fi:
+ #2
+}
+% \end{macrocode}
+% These occur when processing |!(...)|. The idea is to use a variant
+% of |\bool_get_next:N| that finishes its parsing with a logic reveral.
+% Of course, the double logic reversal gets us back to where we started.
+% \begin{macrocode}
\cs_new:Npn \bool_Not:w {
- \exp_after:wN \intexpr_if_even_p:n \tex_number:D \bool_get_next:N
+ \exp_after:wN \tex_number:D \bool_get_not_next:N
+}
+\cs_new:Npn \bool_not_Not:w {
+ \exp_after:wN \tex_number:D \bool_get_next:N
}
+% \end{macrocode}
+% These occur when processing |!<bool>| and can be evaluated directly.
+% \begin{macrocode}
\cs_new:Npn \bool_Not:N #1 {
\exp_after:wN \bool_p:w
\if_meaning:w #1 \c_true_bool
@@ -1311,19 +1363,33 @@
\else:
\c_true_bool
\fi:
-}
+}
+\cs_new:Npn \bool_not_Not:N #1 {
+ \exp_after:wN \bool_p:w
+ \if_meaning:w #1 \c_true_bool
+ \c_true_bool
+ \else:
+ \c_false_bool
+ \fi:
+}
% \end{macrocode}
% The Open operation. Discard the token read and start a
% sub-expression.
+% |\bool_get_next:N| continues building up the logical expressions as usual;
+% |\bool_not_cleanup:N| is what reverses the logic if we're inside |!(...)|.
% \begin{macrocode}
-\cs_set:cpn {bool_(:w}#1{
+\cs_new:cpn {bool_(:w}#1{
\exp_after:wN \bool_cleanup:N \tex_number:D \bool_get_next:N
}
+\cs_new:cpn {bool_not_(:w}#1{
+ \exp_after:wN \bool_not_cleanup:N \tex_number:D \bool_get_next:N
+}
% \end{macrocode}
% Otherwise just evaluate the predicate and look for And, Or or Close
% afterward.
% \begin{macrocode}
-\cs_set:cpn {bool_p:w}{\exp_after:wN \bool_cleanup:N \tex_number:D }
+\cs_new:cpn {bool_p:w}{\exp_after:wN \bool_cleanup:N \tex_number:D }
+\cs_new:cpn {bool_not_p:w}{\exp_after:wN \bool_not_cleanup:N \tex_number:D }
% \end{macrocode}
% This cleanup function can be omitted once predicates return their
% true/false booleans outside the conditionals.
@@ -1332,15 +1398,25 @@
\exp_after:wN \bool_choose:NN \exp_after:wN #1
\int_to_roman:w-`\q
}
+\cs_new_nopar:Npn \bool_not_cleanup:N #1{
+ \exp_after:wN \bool_not_choose:NN \exp_after:wN #1
+ \int_to_roman:w-`\q
+}
% \end{macrocode}
% Branching the six way switch.
+% Reversals should be reasonably straightforward.
+% When programming this, however, I got things around the wrong way a few times.
+% (Will's hacks onto Morten's code, that is.)
% \begin{macrocode}
\cs_new_nopar:Npn \bool_choose:NN #1#2{ \use:c{bool_#2_#1:w} }
+\cs_new_nopar:Npn \bool_not_choose:NN #1#2{ \use:c{bool_not_#2_#1:w} }
% \end{macrocode}
% Continues scanning. Must remove the second "&" or "|".
% \begin{macrocode}
\cs_new_nopar:cpn{bool_&_1:w}&{\bool_get_next:N}
\cs_new_nopar:cpn{bool_|_0:w}|{\bool_get_next:N}
+\cs_new_nopar:cpn{bool_not_&_0:w}&{\bool_get_next:N}
+\cs_new_nopar:cpn{bool_not_|_1:w}|{\bool_get_next:N}
% \end{macrocode}
% Closing a group is just about returning the result. The Stop
% operation is similar except it closes the special alignment group
@@ -1348,6 +1424,8 @@
% \begin{macrocode}
\cs_new_nopar:cpn{bool_)_0:w}{ \c_false_bool }
\cs_new_nopar:cpn{bool_)_1:w}{ \c_true_bool }
+\cs_new_nopar:cpn{bool_not_)_0:w}{ \c_true_bool }
+\cs_new_nopar:cpn{bool_not_)_1:w}{ \c_false_bool }
\cs_new_nopar:cpn{bool_S_0:w}{\group_align_safe_end: \c_false_bool }
\cs_new_nopar:cpn{bool_S_1:w}{\group_align_safe_end: \c_true_bool }
% \end{macrocode}
@@ -1356,8 +1434,10 @@
% evaluation. This is slightly tricky as there are no braces so we
% have to play match the "()" manually.
% \begin{macrocode}
-\cs_set:cpn{bool_&_0:w}&{\bool_eval_skip_to_end:Nw \c_false_bool}
-\cs_set:cpn{bool_|_1:w}|{\bool_eval_skip_to_end:Nw \c_true_bool}
+\cs_new:cpn{bool_&_0:w}&{\bool_eval_skip_to_end:Nw \c_false_bool}
+\cs_new:cpn{bool_|_1:w}|{\bool_eval_skip_to_end:Nw \c_true_bool}
+\cs_new:cpn{bool_not_&_1:w}&{\bool_eval_skip_to_end:Nw \c_false_bool}
+\cs_new:cpn{bool_not_|_0:w}|{\bool_eval_skip_to_end:Nw \c_true_bool}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1433,15 +1513,15 @@
% to do simple pattern matching. With a new enough pdf\TeX\ one can do
% that sort of thing to test for existence of particular tokens.
% \begin{macrocode}
-\cs_set:Npn \bool_eval_skip_to_end:Nw #1#2){
- \bool_eval_skip_to_end_aux:Nw #1 #2(\q_no_value\q_nil{#2}
+\cs_new:Npn \bool_eval_skip_to_end:Nw #1#2){
+ \bool_eval_skip_to_end_aux:Nw #1 #2(\q_no_value\q_stop{#2}
}
% \end{macrocode}
% If no right parenthesis, then |#3| is no_value and we are done, return
% the boolean |#1|. If there is, we need to grab a () pair and then
% recurse
% \begin{macrocode}
-\cs_set:Npn \bool_eval_skip_to_end_aux:Nw #1#2(#3#4\q_nil#5{
+\cs_new:Npn \bool_eval_skip_to_end_aux:Nw #1#2(#3#4\q_stop#5{
\quark_if_no_value:NTF #3
{ #1 }
{ \bool_eval_skip_to_end_auxii:Nw #1 #5 }
@@ -1451,7 +1531,7 @@
% irrelevant, remove a () pair but remember to reinsert |#3| as it may
% contain ( tokens!
% \begin{macrocode}
-\cs_set:Npn \bool_eval_skip_to_end_auxii:Nw #1#2(#3){
+\cs_new:Npn \bool_eval_skip_to_end_auxii:Nw #1#2(#3){
\bool_eval_skip_to_end:Nw #1#3 )
}
% \end{macrocode}
@@ -1598,7 +1678,7 @@
}
\cs_new:Npn \prg_case_str_aux:nnn #1#2#3{
\quark_if_recursion_tail_stop_do:nn{#2}{\use:n}
- \tl_if_eq:xxTF{#1}{#2}
+ \str_if_eq:xxTF{#1}{#2}
{ \prg_end_case:nw {#3} }
{ \prg_case_str_aux:nnn {#1}}
}
@@ -1792,9 +1872,9 @@
\group_end:
\cs_new_nopar:Npn \prg_variable_get_scope:N #1 {
\exp_last_unbraced:Nf \prg_variable_get_scope_aux:w
- { \cs_to_str:N #1 \exp_stop_f: \q_nil }
+ { \cs_to_str:N #1 \exp_stop_f: \q_stop }
}
- \cs_new_nopar:Npn \prg_variable_get_scope_aux:w #1#2 \q_nil {
+ \cs_new_nopar:Npn \prg_variable_get_scope_aux:w #1#2 \q_stop {
\token_if_eq_meaning:NNT & #1 {g}
}
}
@@ -1805,13 +1885,13 @@
\group_end:
\cs_new_nopar:Npn \prg_variable_get_type:N #1 {
\exp_after:wN \p;rg_variable_get_type_aux:w
- \token_to_str:N #1 & a \q_nil
+ \token_to_str:N #1 & a \q_stop
}
- \cs_new_nopar:Npn \prg_variable_get_type_aux:w #1 & #2#3 \q_nil {
+ \cs_new_nopar:Npn \prg_variable_get_type_aux:w #1 & #2#3 \q_stop {
\token_if_eq_meaning:NNTF a #2 {
#1
}{
- \prg_variable_get_type_aux:w #2#3 \q_nil
+ \prg_variable_get_type_aux:w #2#3 \q_stop
}
}
}
diff --git a/Master/texmf-dist/source/latex/expl3/l3quark.dtx b/Master/texmf-dist/source/latex/expl3/l3quark.dtx
index 954f903ca06..d5db2374451 100644
--- a/Master/texmf-dist/source/latex/expl3/l3quark.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3quark.dtx
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3quark.dtx 1853 2010-03-21 09:11:08Z joseph $
+\GetIdInfo$Id: l3quark.dtx 2036 2010-09-20 20:33:54Z joseph $
{L3 Experimental Quark Commands}
%\iffalse
%<*driver>
@@ -303,7 +303,7 @@
% \begin{macrocode}
\cs_new:Npn \quark_if_recursion_tail_stop:n #1 {
\exp_after:wN\if_meaning:w
- \quark_if_recursion_tail_aux:w #1?\q_nil\q_recursion_tail\q_recursion_tail
+ \quark_if_recursion_tail_aux:w #1?\q_stop\q_recursion_tail\q_recursion_tail
\exp_after:wN \use_none_delimit_by_q_recursion_stop:w
\fi:
}
@@ -324,7 +324,7 @@
% \begin{macrocode}
\cs_new:Npn \quark_if_recursion_tail_stop_do:nn #1#2 {
\exp_after:wN\if_meaning:w
- \quark_if_recursion_tail_aux:w #1?\q_nil\q_recursion_tail\q_recursion_tail
+ \quark_if_recursion_tail_aux:w #1?\q_stop\q_recursion_tail\q_recursion_tail
\exp_after:wN \use_i_delimit_by_q_recursion_stop:nw
\else:
\exp_after:wN\use_none:n
@@ -347,7 +347,7 @@
%
% \begin{macro}[aux]{\quark_if_recursion_tail_aux:w}
% \begin{macrocode}
-\cs_new:Npn \quark_if_recursion_tail_aux:w #1#2 \q_nil \q_recursion_tail {#1}
+\cs_new:Npn \quark_if_recursion_tail_aux:w #1#2 \q_stop \q_recursion_tail {#1}
% \end{macrocode}
% \end{macro}
%
@@ -364,38 +364,14 @@
\prg_return_true: \else: \prg_return_false: \fi:
}
% \end{macrocode}
-% We also provide an |n| type. If run under a sufficiently new
-% pdf\eTeX, it uses a built-in primitive for string comparisons,
-% otherwise it uses the slower |\str_if_eq_var_p:nf| function. In the
-% latter case it would be faster to use a temporary token list variable
-% but it would render the function non-expandable. Using the pdf\eTeX\
-% primitive is the preferred approach. Note that we have to add a
-% manual space token in the first part of the comparison, otherwise it
-% is gobbled by |\str_if_eq_var_p:nf|. The reason for using this
-% function instead of |\str_if_eq_p:nn| is that a sequence like
-% \verb*+ \q_no_value+ will test equal to |\q_no_value| using the
-% latter test function and unfortunately this example turned up in one
-% application.
+% These tests are easy with \cs{pdf_strcmp:D} available.
% \begin{macrocode}
-\cs_if_exist:cTF {pdf_strcmp:D}
-{
- \prg_new_conditional:Nnn \quark_if_no_value:n {p,TF,T,F} {
- \if_num:w \pdf_strcmp:D
- {\exp_not:N \q_no_value}
- {\exp_not:n{#1}} = \c_zero
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
-}
-{
- \prg_new_conditional:Nnn \quark_if_no_value:n {p,TF,T,F} {
- \exp_args:NNo
- \if_predicate:w \str_if_eq_var_p:nf
- {\token_to_str:N\q_no_value\c_space_tl}
- {\tl_to_str:n{#1}}
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
+\prg_new_conditional:Nnn \quark_if_no_value:n {p,TF,T,F} {
+ \if_num:w \pdf_strcmp:D
+ {\exp_not:N \q_no_value}
+ {\exp_not:n{#1}} = \c_zero
+ \prg_return_true: \else: \prg_return_false:
+ \fi:
}
% \end{macrocode}
% \end{macro}
@@ -416,24 +392,12 @@
% \begin{macro}[TF]{\quark_if_nil:n,\quark_if_nil:V,\quark_if_nil:o}
% A function to check for the presence of |\q_nil|.
% \begin{macrocode}
-\cs_if_exist:cTF {pdf_strcmp:D} {
- \prg_new_conditional:Nnn \quark_if_nil:n {p,TF,T,F} {
- \if_num:w \pdf_strcmp:D
- {\exp_not:N \q_nil}
- {\exp_not:n{#1}} = \c_zero
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
-}
-{
- \prg_new_conditional:Nnn \quark_if_nil:n {p,TF,T,F} {
- \exp_args:NNo
- \if_predicate:w \str_if_eq_var_p:nf
- {\token_to_str:N\q_nil\c_space_tl}
- {\tl_to_str:n{#1}}
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
+\prg_new_conditional:Nnn \quark_if_nil:n {p,TF,T,F} {
+ \if_num:w \pdf_strcmp:D
+ {\exp_not:N \q_nil}
+ {\exp_not:n{#1}} = \c_zero
+ \prg_return_true: \else: \prg_return_false:
+ \fi:
}
\cs_generate_variant:Nn \quark_if_nil_p:n {V}
\cs_generate_variant:Nn \quark_if_nil:nTF {V}
diff --git a/Master/texmf-dist/source/latex/expl3/l3skip.dtx b/Master/texmf-dist/source/latex/expl3/l3skip.dtx
index 572c4e919a1..af3a37564be 100644
--- a/Master/texmf-dist/source/latex/expl3/l3skip.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3skip.dtx
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3skip.dtx 1933 2010-05-25 00:26:38Z will $
+\GetIdInfo$Id: l3skip.dtx 2047 2010-09-23 09:27:30Z will $
{L3 Experimental skip registers}
%\iffalse
%<*driver>
@@ -408,6 +408,36 @@
% \end{texnote}
% \end{function}
%
+%\begin{function}{
+% \dim_compare_p:n / (EXP) |
+% \dim_compare:n / (TF) (EXP)
+%}
+% \begin{syntax}
+% "\dim_compare_p:n" \Arg{<dim expr.\ 1> <rel> <dim expr.\ 2>}
+% "\dim_compare:nTF" \Arg{<dim expr.\ 1> <rel> <dim expr.\ 2>}
+% ~~~~<true code> <false code>
+% \end{syntax}
+% Evaluates <dim expr.\ 1> and <dim expr.\ 2> and then carries out a
+% comparison of the resulting lengths using C-like operators:
+% \begin{center}
+% \begin{tabular}{ll@{\hspace{2cm}}ll}
+% Less than & "<" & Less than or equal & "<=" \\
+% Greater than & ">" & Greater than or equal & ">=" \\
+% Equal & "==" or "=" & Not equal & "!="
+% \end{tabular}
+% \end{center}
+% Based on the result of the comparison either the <true code>
+% or <false code> is executed. Both dimension expressions are evaluated
+% fully in the process. Note the syntax, which allows natural input in
+% the style of
+% \begin{quote}
+% |\dim_compare_p:n {2.54cm != \l_tmpb_int}|
+% \end{quote}
+% A single equals sign is available as comparator (in addition to those
+% familiar to C users) as standard \TeX\ practice is to compare
+% values using \texttt{=}.
+% \end{function}
+%
% \begin{function}{ \dim_compare:nNn / (TF)(EXP) | \dim_compare_p:nNn / (EXP)}
% \begin{syntax}
% "\dim_compare:nNnTF" \Arg{dim~expr} <rel> \Arg{dim~expr}
@@ -420,6 +450,10 @@
% \dim_compare:nNnTF \l_temp_dim < \c_zero_skip {negative}{non-negative}
% \end{verbatim}
% you can safely omit the braces.
+%
+% These functions are faster than the \texttt{n}
+% variants described above but do not support an extended set
+% of relational operators.
% \begin{texnote}
% This is the \TeX{} primitive \tn{ifdim} turned into a function.
% \end{texnote}
@@ -1019,6 +1053,114 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\dim_compare_p:n}
+% \begin{macro}[TF]{\dim_compare:n}
+% [This code plus comments lifted directly from the |\intexpr_compare:nTF| function.]
+% Some things we need for the code below.
+% TODO: normalise names and things.
+% \begin{macrocode}
+\cs_set_eq:NN \dim_value:w \tex_number:D
+\cs_set_eq:NN \dim_eval:w \etex_dimexpr:D
+\cs_set_eq:NN \if_dim_compare:w \if_dim:w
+\cs_set_eq:NN \dim_eval_end: \scan_stop:
+% \end{macrocode}
+% Comparison tests using a simple syntax where only one set of braces
+% is required and additional operators such as "!=" and ">=" are
+% supported. First some notes on the idea behind this. We wish to
+% support writing code like
+% \begin{verbatim}
+% \dim_compare_p:n { 5 + \l_tmpa_dim != 4 - \l_tmpb_dim }
+% \end{verbatim}
+% In other words, we want to somehow add the missing "\dim_eval:w"
+% where required. We can start evaluating from the left using
+% "\dim:w", and we know that since the relation symbols "<", ">",
+% "=" and "!" are not allowed in such expressions, they will terminate
+% the expression. Therefore, we first let \TeX\ evaluate this left
+% hand side of the (in)equality.
+% \begin{macrocode}
+\prg_new_conditional:Npnn \dim_compare:n #1 {p,TF,T,F} {
+ \exp_after:wN \dim_compare_auxi:w \dim_value:w
+ \dim_eval:w #1 \q_stop
+}
+% \end{macrocode}
+% Then the next step is to figure out which relation we should use, so
+% we have to somehow get rid of the first evaluation so that we can
+% see what stopped it. "\tex_romannumeral:D" is handy here since its
+% expansion given a non-positive number is \m{null}. We therefore
+% simply check if the first token of the left hand side evaluation is
+% a minus. If not, we insert it and issue "\tex_romannumeral:D",
+% thereby ridding us of the left hand side evaluation. We do however
+% save it for later.
+% \begin{macrocode}
+\cs_new:Npn \dim_compare_auxi:w #1#2 \q_stop {
+ \exp_after:wN \dim_compare_auxii:w \tex_romannumeral:D
+ \if:w #1- \else: -\fi: #1#2 \q_mark #1#2 \q_stop
+}
+% \end{macrocode}
+% This leaves the first relation symbol in front and assuming the
+% right hand side has been input, at least one other token as well. We
+% support the following forms: |=|, |<|, |>| and the extended |!=|,
+% |==|, |<=| and |>=|. All the extended forms have an extra |=| so we
+% check if that is present as well. Then use specific function to
+% perform the test.
+% \begin{macrocode}
+\cs_new:Npn \dim_compare_auxii:w #1#2#3\q_mark{
+ \use:c{
+ dim_compare_ #1 \if_meaning:w =#2 = \fi:
+ :w}
+}
+% \end{macrocode}
+% The actual comparisons are then simple function calls, using the
+% relation as delimiter for a delimited argument.
+% Equality is easy:
+% \begin{macrocode}
+\cs_new:cpn {dim_compare_=:w} #1 = #2 \q_stop {
+ \if_dim_compare:w #1 sp = \dim_eval:w #2 \dim_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+% \end{macrocode}
+% So is the one using |==| -- we just have to use |==| in the
+% parameter text.
+% \begin{macrocode}
+\cs_new:cpn {dim_compare_==:w} #1 == #2 \q_stop {
+ \if_dim_compare:w #1 sp = \dim_eval:w #2 \dim_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+% \end{macrocode}
+% Not equal is just about reversing the truth value.
+% \begin{macrocode}
+\cs_new:cpn {dim_compare_!=:w} #1 != #2 \q_stop {
+ \if_dim_compare:w #1 sp = \dim_eval:w #2 \dim_eval_end:
+ \prg_return_false: \else: \prg_return_true: \fi:
+}
+% \end{macrocode}
+% Less than and greater than are also straight forward.
+% \begin{macrocode}
+\cs_new:cpn {dim_compare_<:w} #1 < #2 \q_stop {
+ \if_dim_compare:w #1 sp < \dim_eval:w #2 \dim_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\cs_new:cpn {dim_compare_>:w} #1 > #2 \q_stop {
+ \if_dim_compare:w #1 sp > \dim_eval:w #2 \dim_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+% \end{macrocode}
+% 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_new:cpn {dim_compare_<=:w} #1 <= #2 \q_stop {
+ \if_dim_compare:w #1 sp > \dim_eval:w #2 \dim_eval_end:
+ \prg_return_false: \else: \prg_return_true: \fi:
+}
+\cs_new:cpn {dim_compare_>=:w} #1 >= #2 \q_stop {
+ \if_dim_compare:w #1 sp < \dim_eval:w #2 \dim_eval_end:
+ \prg_return_false: \else: \prg_return_true: \fi:
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
% \begin{macro}{\dim_while_do:nNnn}
% \begin{macro}{\dim_until_do:nNnn}
% \begin{macro}{\dim_do_while:nNnn}
diff --git a/Master/texmf-dist/source/latex/expl3/l3tl.dtx b/Master/texmf-dist/source/latex/expl3/l3tl.dtx
index 24b80f731bb..c7c84a531ae 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 1919 2010-05-22 05:56:38Z will $
+\GetIdInfo$Id: l3tl.dtx 2040 2010-09-21 18:11:09Z joseph $
{L3 Experimental Token Lists}
%\iffalse
%<*driver>
@@ -380,51 +380,6 @@
% \end{function}
%
%
-% \begin{function}{\tl_if_eq:nn / (TF)(EXP) |
-% \tl_if_eq:nV / (TF)(EXP) |
-% \tl_if_eq:no / (TF)(EXP) |
-% \tl_if_eq:Vn / (TF)(EXP) |
-% \tl_if_eq:on / (TF)(EXP) |
-% \tl_if_eq:VV / (TF)(EXP) |
-% \tl_if_eq:oo / (TF)(EXP) |
-% \tl_if_eq:xx / (TF)(EXP) |
-% \tl_if_eq:xn / (TF)(EXP) |
-% \tl_if_eq:nx / (TF)(EXP) |
-% \tl_if_eq:xV / (TF)(EXP) |
-% \tl_if_eq:xo / (TF)(EXP) |
-% \tl_if_eq:Vx / (TF)(EXP) |
-% \tl_if_eq:ox / (TF)(EXP) }
-% \begin{syntax}
-% "\tl_if_eq:nnTF" \Arg{tlist1} \Arg{tlist2} \Arg{true code} \Arg{false code}
-% \end{syntax}
-% Execute <true code> if the two token lists <tlist1> and <tlist2> are
-% identical. These functions are expandable if a new enough version of
-% pdf\TeX\ is being used.
-% \end{function}%
-%
-% \begin{function}{\tl_if_eq_p:nn / (EXP) |
-% \tl_if_eq_p:nV / (EXP) |
-% \tl_if_eq_p:no / (EXP) |
-% \tl_if_eq_p:Vn / (EXP) |
-% \tl_if_eq_p:on / (EXP) |
-% \tl_if_eq_p:VV / (EXP) |
-% \tl_if_eq_p:oo / (EXP) |
-% \tl_if_eq_p:xx / (EXP) |
-% \tl_if_eq_p:xn / (EXP) |
-% \tl_if_eq_p:nx / (EXP) |
-% \tl_if_eq_p:xV / (EXP) |
-% \tl_if_eq_p:xo / (EXP) |
-% \tl_if_eq_p:Vx / (EXP) |
-% \tl_if_eq_p:ox / (EXP) }
-% \begin{syntax}
-% "\tl_if_eq_p:nn" \Arg{tlist1} \Arg{tlist2}
-% \end{syntax}
-% Predicates function which returns `true' if the two token list
-% are identical and `false' otherwise. These are only defined if a new enough version
-% of pdf\TeX\ is in use.
-% \end{function}
-%
-%
% \begin{function}{\tl_if_empty_p:n / (EXP) |
% \tl_if_empty_p:V / (EXP) |
% \tl_if_empty_p:o / (EXP) |
@@ -438,6 +393,18 @@
% Execute <true code> if <\tlist> doesn't contain any tokens and <false
% code> otherwise.
% \end{function}
+%
+%\begin{function}{ \tl_if_eq:nn / (TF) }
+% \begin{syntax}
+% \cs{tl_if_eq:nnTF} \meta{token list1} \Arg{token list2} \Arg{true code}
+% ~~\Arg{false code}
+% \end{syntax}
+% Tests if \meta{token list1} and \meta{token list2} both in
+% respect of character codes and category codes. Either the
+% \meta{true code} or \meta{false code} in the input stream, as
+% appropriate to the truth of the test and the variant of the function
+% chosen.
+%\end{function}
%
% \begin{function}{\tl_if_blank_p:n / (EXP)|
% \tl_if_blank:n / (TF)(EXP)|
@@ -752,13 +719,13 @@
% \begin{syntax}
% "\tl_head:n" "{" <token1><token2>...<token\,$\sb k$> "}" \\
% "\tl_tail:n" "{" <token1><token2>...<token\,$\sb k$> "}" \\
-% "\tl_head:w" <token1><token2>...<token\,$\sb k$> "\q_nil"
+% "\tl_head:w" <token1><token2>...<token\,$\sb k$> "\q_stop"
% \end{syntax}
% These functions return either the head or the tail from a list of tokens, thus in
% the above example "\tl_head:n" would return <token1> and "\tl_tail:n"
% would return <token2>\dots<token\,$\sb k$>. "\tl_head_iii:n" returns the first
% three tokens. The ":w" versions require some care as they expect the token
-% list to be delimited by "\q_nil".
+% list to be delimited by "\q_stop".
% \begin{texnote}
% These are the Lisp functions "car" and "cdr" but with \LaTeX3 names.
% \end{texnote}
@@ -1395,6 +1362,30 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
+%
+%\begin{macro}[TF]{\tl_if_eq:nn}
+%\begin{macro}[aux]{\l_tl_tmpa_tl}
+%\begin{macro}[aux]{\l_tl_tmpb_tl}
+% A simple store and compare routine.
+% \begin{macrocode}
+\prg_new_protected_conditional:Npnn \tl_if_eq:nn #1#2 { T , F , TF } {
+ \group_begin:
+ \tl_set:Nn \l_tl_tmpa_tl {#1}
+ \tl_set:Nn \l_tl_tmpb_tl {#2}
+ \tex_ifx:D \l_tl_tmpa_tl \l_tl_tmpb_tl
+ \group_end:
+ \prg_return_false:
+ \tex_else:D
+ \group_end:
+ \prg_return_false:
+ \tex_fi:D
+}
+\tl_new:N \l_tl_tmpa_tl
+\tl_new:N \l_tl_tmpb_tl
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
%
%
% \begin{macro}{\tl_if_empty_p:n,\tl_if_empty_p:V,\tl_if_empty_p:o}
@@ -1441,9 +1432,9 @@
% problem as the solutions in ``Around the Bend No~2''.
% \begin{macrocode}
\prg_new_conditional:Npnn \tl_if_blank:n #1 {p,TF,T,F} {
- \exp_after:wN \tl_if_blank_p_aux:w \tl_to_str:n {#1} aa..\q_nil
+ \exp_after:wN \tl_if_blank_p_aux:w \tl_to_str:n {#1} aa..\q_stop
}
-\cs_new:Npn \tl_if_blank_p_aux:w #1#2 a #3#4 \q_nil {
+\cs_new:Npn \tl_if_blank_p_aux:w #1#2 a #3#4 \q_stop {
\if_meaning:w #3 #4 \prg_return_true: \else: \prg_return_false: \fi:
}
\cs_generate_variant:Nn \tl_if_blank_p:n {V}
@@ -1471,7 +1462,7 @@
\tl_if_blank:nTF {#1}
{\prg_return_true:}
{
- \_tl_if_single_aux:w #1 \q_nil
+ \_tl_if_single_aux:w #1 \q_stop
}
}
}
@@ -1487,14 +1478,14 @@
\exp_after:wN \tl_if_blank:nTF #1
{\prg_return_true:}
{
- \exp_after:wN \_tl_if_single_aux:w #1 \q_nil
+ \exp_after:wN \_tl_if_single_aux:w #1 \q_stop
}
}
}
% \end{macrocode}
%
% \begin{macrocode}
-\cs_new:Npn \_tl_if_single_aux:w #1#2 \q_nil {
+\cs_new:Npn \_tl_if_single_aux:w #1#2 \q_stop {
\tl_if_empty:nTF {#2} \prg_return_true: \prg_return_false:
}
% \end{macrocode}
@@ -1502,202 +1493,6 @@
% \end{macro}
%
%
-% \begin{macro}[TF]{\tl_if_eq:xx,\tl_if_eq:nn,\tl_if_eq:VV,\tl_if_eq:oo,
-% \tl_if_eq:xn,\tl_if_eq:nx,\tl_if_eq:on,\tl_if_eq:no,
-% \tl_if_eq:Vn,\tl_if_eq:nV,
-% \tl_if_eq:xV,\tl_if_eq:xo,\tl_if_eq:Vx,\tl_if_eq:ox}
-% \begin{macro}{\tl_if_eq_p:xx,\tl_if_eq_p:nn,\tl_if_eq_p:VV,\tl_if_eq_p:oo,
-% \tl_if_eq_p:xn,\tl_if_eq_p:nx,\tl_if_eq_p:Vn,\tl_if_eq_p:on,
-% \tl_if_eq_p:nV,\tl_if_eq_p:no,\tl_if_eq_p:xV,\tl_if_eq_p:Vx,
-% \tl_if_eq_p:xo,\tl_if_eq_p:ox}
-% Test if two token lists are identical. pdf\TeX\ contains a most
-% interesting primitive for expandable string comparison so we make
-% use of it if available. Presumable it will be in the final
-% version.
-%
-% Firstly we give it an appropriate name. Note that this primitive
-% actually performs an \texttt{x} type expansion but it is still
-% expandable! Hence we must program these functions backwards to add
-% \verb|\exp_not:n|. We provide the combinations for the types
-% \texttt{n}, \texttt{o} and \texttt{x}.
-% \begin{macrocode}
-\cs_new_eq:NN \tl_compare:xx \pdf_strcmp:D
-\cs_new:Npn \tl_compare:nn #1#2{
- \tl_compare:xx{\exp_not:n{#1}}{\exp_not:n{#2}}
-}
-\cs_new:Npn \tl_compare:nx #1{
- \tl_compare:xx{\exp_not:n{#1}}
-}
-\cs_new:Npn \tl_compare:xn #1#2{
- \tl_compare:xx{#1}{\exp_not:n{#2}}
-}
-\cs_new:Npn \tl_compare:nV #1#2 {
- \tl_compare:xx { \exp_not:n {#1} } { \exp_not:V #2 }
-}
-\cs_new:Npn \tl_compare:no #1#2{
- \tl_compare:xx{\exp_not:n{#1}}{\exp_not:n\exp_after:wN{#2}}
-}
-\cs_new:Npn \tl_compare:Vn #1#2 {
- \tl_compare:xx { \exp_not:V #1 } { \exp_not:n {#2} }
-}
-\cs_new:Npn \tl_compare:on #1#2{
- \tl_compare:xx{\exp_not:n\exp_after:wN{#1}}{\exp_not:n{#2}}
-}
-\cs_new:Npn \tl_compare:VV #1#2 {
- \tl_compare:xx { \exp_not:V #1 } { \exp_not:V #2 }
-}
-\cs_new:Npn \tl_compare:oo #1#2{
- \tl_compare:xx{\exp_not:n\exp_after:wN{#1}}{\exp_not:n\exp_after:wN{#2}}
-}
-\cs_new:Npn \tl_compare:xV #1#2 {
- \tl_compare:xx {#1} { \exp_not:V #2 }
-}
-\cs_new:Npn \tl_compare:xo #1#2{
- \tl_compare:xx{#1}{\exp_not:n\exp_after:wN{#2}}
-}
-\cs_new:Npn \tl_compare:Vx #1#2 {
- \tl_compare:xx { \exp_not:V #1 } {#2}
-}
-\cs_new:Npn \tl_compare:ox #1#2{
- \tl_compare:xx{\exp_not:n\exp_after:wN{#1}}{#2}
-}
-% \end{macrocode}
-% Since we have a lot of basically identical functions to define we
-% define one to define the rest. Unfortunately we aren't quite set up
-% to use the new \verb|\tl_map_inline:nn| function yet.
-% \begin{macrocode}
-\cs_set_nopar:Npn \tl_tmp:w #1 {
- \tl_set:Nx \l_kernel_tmpa_tl {
- \exp_not:N \prg_new_conditional:Npnn \exp_not:c {tl_if_eq:#1}
- ####1 ####2 {p,TF,T,F} {
- \exp_not:N \tex_ifnum:D
- \exp_not:c {tl_compare:#1} {####1}{####2}
- \exp_not:n{ =\c_zero \prg_return_true: \else: \prg_return_false: \fi: }
- }
- }
- \l_kernel_tmpa_tl
-}
-\tl_tmp:w{xx} \tl_tmp:w{nx} \tl_tmp:w{ox} \tl_tmp:w{Vx}
-\tl_tmp:w{xn} \tl_tmp:w{nn} \tl_tmp:w{on} \tl_tmp:w{Vn}
-\tl_tmp:w{xo} \tl_tmp:w{no} \tl_tmp:w{oo}
-\tl_tmp:w{xV} \tl_tmp:w{nV} \tl_tmp:w{VV}
-% \end{macrocode}
-% However all of this only makes sense if we actually have that
-% primitive. Therefore we disable it again if it is not there and
-% define \verb|\tl_if_eq:nn| the old fashioned (and unexpandable)
-% way.
-%
-% In some cases below, since arbitrary token lists could be being used in
-% this function, you can't assume (as token list variables usually do) that there won't be
-% any |#| tokens. Therefore, "\tl_set:Nx" and "\exp_not:n" is used instead
-% of plain "\tl_set:Nn".
-%
-% \begin{macrocode}
-\cs_if_exist:cF{pdf_strcmp:D}{
- \prg_set_protected_conditional:Npnn \tl_if_eq:nn #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {\exp_not:n{#1}}
- \tl_set:Nx \l_kernel_testb_tl {\exp_not:n{#2}}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:nV #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl { \exp_not:n {#1} }
- \tl_set:Nx \l_kernel_testb_tl { \exp_not:V #2 }
- \if_meaning:w \l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:no #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {\exp_not:n{#1}}
- \tl_set:Nx \l_kernel_testb_tl {\exp_not:o{#2}}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:nx #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {\exp_not:n{#1}}
- \tl_set:Nx \l_kernel_testb_tl {#2}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:Vn #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl { \exp_not:V #1 }
- \tl_set:Nx \l_kernel_testb_tl { \exp_not:n{#2} }
- \if_meaning:w \l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:on #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {\exp_not:o{#1}}
- \tl_set:Nx \l_kernel_testb_tl {\exp_not:n{#2}}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:VV #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl { \exp_not:V #1 }
- \tl_set:Nx \l_kernel_testb_tl { \exp_not:V #2 }
- \if_meaning:w \l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:oo #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {\exp_not:o{#1}}
- \tl_set:Nx \l_kernel_testb_tl {\exp_not:o{#2}}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:Vx #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl { \exp_not:V #1 }
- \tl_set:Nx \l_kernel_testb_tl {#2}
- \if_meaning:w \l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:ox #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {\exp_not:o{#1}}
- \tl_set:Nx \l_kernel_testb_tl {#2}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:xn #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {#1}
- \tl_set:Nx \l_kernel_testb_tl {\exp_not:n{#2}}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:xV #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {#1}
- \tl_set:Nx \l_kernel_testb_tl { \exp_not:V #2 }
- \if_meaning:w \l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:xo #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {#1}
- \tl_set:Nx \l_kernel_testb_tl {\exp_not:o{#2}}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:xx #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {#1}
- \tl_set:Nx \l_kernel_testb_tl {#2}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-%
% \subsection{Working with the contents of token lists}
%
%
@@ -2232,16 +2027,16 @@
% These functions pick up either the head or the tail of a list.
% "\tl_head_iii:n" returns the first three items on a list.
% \begin{macrocode}
-\cs_new:Npn \tl_head:n #1{\tl_head:w #1\q_nil}
+\cs_new:Npn \tl_head:n #1{\tl_head:w #1\q_stop}
\cs_new_eq:NN \tl_head_i:n \tl_head:n
-\cs_new:Npn \tl_tail:n #1{\tl_tail:w #1\q_nil}
+\cs_new:Npn \tl_tail:n #1{\tl_tail:w #1\q_stop}
\cs_generate_variant:Nn \tl_tail:n {f}
-\cs_new:Npn \tl_head_iii:n #1{\tl_head_iii:w #1\q_nil}
+\cs_new:Npn \tl_head_iii:n #1{\tl_head_iii:w #1\q_stop}
\cs_generate_variant:Nn \tl_head_iii:n {f}
-\cs_new_eq:NN \tl_head:w \use_i_delimit_by_q_nil:nw
+\cs_new:Npn \tl_head:w #1#2\q_stop{#1}
\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_new:Npn \tl_tail:w #1#2\q_stop{#2}
+\cs_new:Npn \tl_head_iii:w #1#2#3#4\q_stop{#1#2#3}
\cs_generate_variant:Nn \tl_head:n { V }
\cs_generate_variant:Nn \tl_tail:n { V }
% \end{macrocode}
@@ -2277,7 +2072,7 @@
% equal but would also regard two primitives as equal.
% \begin{macrocode}
\prg_new_conditional:Npnn \tl_if_head_eq_meaning:nN #1#2 {p,TF,T,F} {
- \exp_after:wN \if_meaning:w \tl_head:w #1 \q_nil #2
+ \exp_after:wN \if_meaning:w \tl_head:w #1 \q_stop #2
\prg_return_true: \else: \prg_return_false: \fi:
}
% \end{macrocode}
@@ -2287,14 +2082,14 @@
% \begin{macrocode}
\prg_new_conditional:Npnn \tl_if_head_eq_charcode:nN #1#2 {p,TF,T,F} {
\exp_after:wN \if:w \exp_after:wN \exp_not:N
- \tl_head:w #1 \q_nil \exp_not:N #2
+ \tl_head:w #1 \q_stop \exp_not:N #2
\prg_return_true: \else: \prg_return_false: \fi:
}
% \end{macrocode}
% Actually the default is already an |f| type expansion.
% \begin{macrocode}
%% \cs_new:Npn \tl_if_head_eq_charcode_p:fN #1#2{
-%% \exp_after:wN\if_charcode:w \tl_head:w #1\q_nil\exp_not:N#2
+%% \exp_after:wN\if_charcode:w \tl_head:w #1\q_stop\exp_not:N#2
%% \c_true_bool
%% \else:
%% \c_false_bool
@@ -2314,7 +2109,7 @@
% \begin{macrocode}
\prg_new_conditional:Npnn \tl_if_head_eq_catcode:nN #1#2 {p,TF,T,F} {
\exp_after:wN \if_catcode:w \exp_after:wN \exp_not:N
- \tl_head:w #1 \q_nil \exp_not:N #2
+ \tl_head:w #1 \q_stop \exp_not:N #2
\prg_return_true: \else: \prg_return_false: \fi:
}
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/expl3/l3token.dtx b/Master/texmf-dist/source/latex/expl3/l3token.dtx
index 14d84cb0122..fa1767465d4 100644
--- a/Master/texmf-dist/source/latex/expl3/l3token.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3token.dtx
@@ -35,7 +35,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3token.dtx 1890 2010-04-11 03:37:15Z will $
+\GetIdInfo$Id: l3token.dtx 2029 2010-09-19 13:59:02Z joseph $
{L3 Experimental token investigation and manipulation}
%\iffalse
%<*driver>
@@ -1165,9 +1165,9 @@
% be a problem!
% \begin{macrocode}
\prg_new_conditional:Nnn \token_if_macro:N {p,TF,T,F} {
- \exp_after:wN \token_if_macro_p_aux:w \token_to_meaning:N #1 -> \q_nil
+ \exp_after:wN \token_if_macro_p_aux:w \token_to_meaning:N #1 -> \q_stop
}
-\cs_new_nopar:Npn \token_if_macro_p_aux:w #1 -> #2 \q_nil{
+\cs_new_nopar:Npn \token_if_macro_p_aux:w #1 -> #2 \q_stop{
\if_predicate:w \tl_if_empty_p:n{#2}
\prg_return_false: \else: \prg_return_true: \fi:
}
@@ -1260,9 +1260,9 @@
% \begin{macrocode}
\prg_new_conditional:Nnn \token_if_chardef:N {p,TF,T,F} {
\exp_after:wN \token_if_chardef_aux:w
- \token_to_meaning:N #1?CHAR"\q_nil
+ \token_to_meaning:N #1?CHAR"\q_stop
}
-\cs_new_nopar:Npn \token_if_chardef_aux:w #1?CHAR"#2\q_nil{
+\cs_new_nopar:Npn \token_if_chardef_aux:w #1?CHAR"#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
% \end{macrocode}
@@ -1270,9 +1270,9 @@
% \begin{macrocode}
\prg_new_conditional:Nnn \token_if_mathchardef:N {p,TF,T,F} {
\exp_after:wN \token_if_mathchardef_aux:w
- \token_to_meaning:N #1?MAYHCHAR"\q_nil
+ \token_to_meaning:N #1?MAYHCHAR"\q_stop
}
-\cs_new_nopar:Npn \token_if_mathchardef_aux:w #1?MAYHCHAR"#2\q_nil{
+\cs_new_nopar:Npn \token_if_mathchardef_aux:w #1?MAYHCHAR"#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
% \end{macrocode}
@@ -1285,10 +1285,10 @@
\prg_return_false:
\else:
\exp_after:wN \token_if_int_register_aux:w
- \token_to_meaning:N #1?COUXY\q_nil
+ \token_to_meaning:N #1?COUXY\q_stop
\fi:
}
-\cs_new_nopar:Npn \token_if_int_register_aux:w #1?COUXY#2\q_nil{
+\cs_new_nopar:Npn \token_if_int_register_aux:w #1?COUXY#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
% \end{macrocode}
@@ -1299,10 +1299,10 @@
\prg_return_false:
\else:
\exp_after:wN \token_if_skip_register_aux:w
- \token_to_meaning:N #1?SKIP\q_nil
+ \token_to_meaning:N #1?SKIP\q_stop
\fi:
}
-\cs_new_nopar:Npn \token_if_skip_register_aux:w #1?SKIP#2\q_nil{
+\cs_new_nopar:Npn \token_if_skip_register_aux:w #1?SKIP#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
% \end{macrocode}
@@ -1313,10 +1313,10 @@
\c_false_bool
\else:
\exp_after:wN \token_if_dim_register_aux:w
- \token_to_meaning:N #1?ZIMEX\q_nil
+ \token_to_meaning:N #1?ZIMEX\q_stop
\fi:
}
-\cs_new_nopar:Npn \token_if_dim_register_aux:w #1?ZIMEX#2\q_nil{
+\cs_new_nopar:Npn \token_if_dim_register_aux:w #1?ZIMEX#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
% \end{macrocode}
@@ -1327,10 +1327,10 @@
\prg_return_false:
\else:
\exp_after:wN \token_if_toks_register_aux:w
- \token_to_meaning:N #1?YOKS\q_nil
+ \token_to_meaning:N #1?YOKS\q_stop
\fi:
}
-\cs_new_nopar:Npn \token_if_toks_register_aux:w #1?YOKS#2\q_nil{
+\cs_new_nopar:Npn \token_if_toks_register_aux:w #1?YOKS#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
% \end{macrocode}
@@ -1338,9 +1338,9 @@
% \begin{macrocode}
\prg_new_conditional:Nnn \token_if_protected_macro:N {p,TF,T,F} {
\exp_after:wN \token_if_protected_macro_aux:w
- \token_to_meaning:N #1?PROYECYEZ~MACRO\q_nil
+ \token_to_meaning:N #1?PROYECYEZ~MACRO\q_stop
}
-\cs_new_nopar:Npn \token_if_protected_macro_aux:w #1?PROYECYEZ~MACRO#2\q_nil{
+\cs_new_nopar:Npn \token_if_protected_macro_aux:w #1?PROYECYEZ~MACRO#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
% \end{macrocode}
@@ -1348,9 +1348,9 @@
% \begin{macrocode}
\prg_new_conditional:Nnn \token_if_long_macro:N {p,TF,T,F} {
\exp_after:wN \token_if_long_macro_aux:w
- \token_to_meaning:N #1?LOXG~MACRO\q_nil
+ \token_to_meaning:N #1?LOXG~MACRO\q_stop
}
-\cs_new_nopar:Npn \token_if_long_macro_aux:w #1?LOXG~MACRO#2\q_nil{
+\cs_new_nopar:Npn \token_if_long_macro_aux:w #1?LOXG~MACRO#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
% \end{macrocode}
@@ -1359,10 +1359,10 @@
% \begin{macrocode}
\prg_new_conditional:Nnn \token_if_protected_long_macro:N {p,TF,T,F} {
\exp_after:wN \token_if_protected_long_macro_aux:w
- \token_to_meaning:N #1?PROYECYEZ?LOXG~MACRO\q_nil
+ \token_to_meaning:N #1?PROYECYEZ?LOXG~MACRO\q_stop
}
\cs_new_nopar:Npn \token_if_protected_long_macro_aux:w #1
- ?PROYECYEZ?LOXG~MACRO#2\q_nil{
+ ?PROYECYEZ?LOXG~MACRO#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
% \end{macrocode}
@@ -1400,25 +1400,25 @@
\char_set_catcode:nn{`\O}{12}
\tl_to_lowercase:n{
\group_end:
- \cs_new_nopar:Npn \token_get_prefix_arg_replacement_aux:w #1MACRO?#2->#3\q_nil#4{
+ \cs_new_nopar:Npn \token_get_prefix_arg_replacement_aux:w #1MACRO?#2->#3\q_stop#4{
#4{#1}{#2}{#3}
}
\cs_new_nopar:Npn\token_get_prefix_spec:N #1{
\token_if_macro:NTF #1{
\exp_after:wN \token_get_prefix_arg_replacement_aux:w
- \token_to_meaning:N #1\q_nil\use_i:nnn
+ \token_to_meaning:N #1\q_stop\use_i:nnn
}{\scan_stop:}
}
\cs_new_nopar:Npn\token_get_arg_spec:N #1{
\token_if_macro:NTF #1{
\exp_after:wN \token_get_prefix_arg_replacement_aux:w
- \token_to_meaning:N #1\q_nil\use_ii:nnn
+ \token_to_meaning:N #1\q_stop\use_ii:nnn
}{\scan_stop:}
}
\cs_new_nopar:Npn\token_get_replacement_spec:N #1{
\token_if_macro:NTF #1{
\exp_after:wN \token_get_prefix_arg_replacement_aux:w
- \token_to_meaning:N #1\q_nil\use_iii:nnn
+ \token_to_meaning:N #1\q_stop\use_iii:nnn
}{\scan_stop:}
}
}
diff --git a/Master/texmf-dist/source/latex/expl3/l3toks.dtx b/Master/texmf-dist/source/latex/expl3/l3toks.dtx
index 8faade60b58..6b8e47df71c 100644
--- a/Master/texmf-dist/source/latex/expl3/l3toks.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3toks.dtx
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3toks.dtx 1933 2010-05-25 00:26:38Z will $
+\GetIdInfo$Id: l3toks.dtx 2037 2010-09-20 21:22:45Z joseph $
{L3 Experimental Token Registers}
%\iffalse
%<*driver>
@@ -591,7 +591,7 @@
% token, which is then later removed.
% \begin{macrocode}
\cs_new_protected_nopar:Npn \toks_put_left:Nn #1 {
- \exp_after:wN \toks_put_left_aux:w \exp_after:wN \q_mark
+ \exp_after:wN \toks_put_left_aux:w \exp_after:wN \q_nil
\toks_use:N #1 \q_stop #1
}
% \end{macrocode}
@@ -744,7 +744,7 @@
% This function test whether two token registers have the same contents.
% \begin{macrocode}
\prg_new_conditional:Nnn \toks_if_eq:NN {p,TF,T,F} {
- \tl_if_eq:xxTF {\toks_use:N #1} {\toks_use:N #2}
+ \str_if_eq:xxTF {\toks_use:N #1} {\toks_use:N #2}
{\prg_return_true:} {\prg_return_false:}
}
\cs_generate_variant:Nn \toks_if_eq_p:NN {Nc,c,cc}
diff --git a/Master/texmf-dist/tex/latex/expl3/expl3.sty b/Master/texmf-dist/tex/latex/expl3/expl3.sty
index 8ab93d24188..1c4c346d8a7 100644
--- a/Master/texmf-dist/tex/latex/expl3/expl3.sty
+++ b/Master/texmf-dist/tex/latex/expl3/expl3.sty
@@ -49,11 +49,12 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: expl3.dtx 2020 2010-09-14 10:37:46Z joseph $
+\GetIdInfo$Id: expl3.dtx 2022 2010-09-16 13:00:35Z joseph $
{L3 Experimental code bundle wrapper}%
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
\RequirePackage{etex}
+\reserveinserts{32}
\newcommand*\@l@expl@check@declarations@bool{0}
\newcommand*\@l@expl@log@functions@bool{0}
\DeclareOption{check-declarations}{
diff --git a/Master/texmf-dist/tex/latex/expl3/l3basics.sty b/Master/texmf-dist/tex/latex/expl3/l3basics.sty
index 785b120b2dc..d128e2fa1f3 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3basics.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3basics.sty
@@ -15,7 +15,7 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3basics.dtx Copyright (C) 1990-2008 LaTeX3 project
+%% File: l3basics.dtx Copyright (C) 1990-2008,2010 LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -48,7 +48,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3basics.dtx 1992 2010-08-04 20:41:40Z joseph $
+\GetIdInfo$Id: l3basics.dtx 2037 2010-09-20 21:22:45Z joseph $
{L3 Experimental basic definitions}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -307,13 +307,13 @@
\tex_chardef:D \c_true_bool = 1~
\tex_chardef:D \c_false_bool = 0~
\cs_set_nopar:Npn \cs_to_str:N {
- \if:w \exp_after:wN \cs_str_aux:w\token_to_str:N \a ax\q_nil
+ \if:w \exp_after:wN \cs_str_aux:w\token_to_str:N \a ax\q_stop
\else:
\exp_after:wN \exp_after:wN\exp_after:wN \use_ii:nn
\fi:
\exp_after:wN \use_none:n \token_to_str:N
}
-\cs_set:Npn \cs_str_aux:w #1#2#3#4\q_nil{#2#3}
+\cs_set:Npn \cs_str_aux:w #1#2#3#4\q_stop{#2#3}
\group_begin:
\tex_lccode:D `\@ = `\: \scan_stop:
\tex_catcode:D `\@ = 12~
@@ -321,18 +321,18 @@
\group_end:
\cs_set:Npn \cs_split_function:NN #1#2{
\exp_after:wN \cs_split_function_aux:w
- \tex_romannumeral:D -`\q \cs_to_str:N #1 @a \q_nil #2
+ \tex_romannumeral:D -`\q \cs_to_str:N #1 @a \q_stop #2
}
-\cs_set:Npn \cs_split_function_aux:w #1@#2#3\q_nil#4{
+\cs_set:Npn \cs_split_function_aux:w #1@#2#3\q_stop#4{
\if_meaning:w a#2
\exp_after:wN \use_i:nn
\else:
\exp_after:wN\use_ii:nn
\fi:
{#4{#1}{}\c_false_bool}
- {\cs_split_function_auxii:w#2#3\q_nil #4{#1}}
+ {\cs_split_function_auxii:w#2#3\q_stop #4{#1}}
}
-\cs_set:Npn \cs_split_function_auxii:w #1@a\q_nil#2#3{
+\cs_set:Npn \cs_split_function_auxii:w #1@a\q_stop#2#3{
#2{#3}{#1}\c_true_bool
}
}
@@ -372,7 +372,7 @@
\cs_split_function:NN #1 \cs_if_do_not_use_aux:nnN
}
\cs_set:Npn \cs_if_do_not_use_aux:nnN #1#2#3{
- \exp_after:wN\str_if_eq_p:nn \token_to_str:N D {#2}
+ \str_if_eq_p:nn { D } {#2}
}
\prg_set_conditional:Npnn \cs_if_free:N #1{p,TF,T,F}{
\tex_ifnum:D \cs_if_exist_p:N #1 =\c_zero
@@ -445,32 +445,18 @@
\cs_set_protected_nopar:Npn \chk_if_exist_cs:c {
\exp_args:Nc \chk_if_exist_cs:N
}
-\prg_set_conditional:Npnn \str_if_eq:nn #1#2{p}{
- \str_if_eq_p_aux:w #1\scan_stop:\\#2\scan_stop:\\
+\prg_set_conditional:Npnn \str_if_eq:nn #1#2 { p , T , F , TF } {
+ \tex_ifnum:D \pdf_strcmp:D
+ { \etex_unexpanded:D {#1} } { \etex_unexpanded:D {#2} }
+ = \c_zero
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\prg_set_conditional:Npnn \str_if_eq:xx #1#2 { p , T , F , TF } {
+ \tex_ifnum:D \pdf_strcmp:D {#1} {#2} = \c_zero
+ \prg_return_true: \else: \prg_return_false: \fi:
}
-\cs_set_nopar:Npn \str_if_eq_p_aux:w #1#2\\#3#4\\{
- \if_meaning:w#1#3
- \if_meaning:w#1\scan_stop:\prg_return_true: \else:
- \if_meaning:w#3\scan_stop:\prg_return_false: \else:
- \str_if_eq_p_aux:w #2\\#4\\\fi:\fi:
- \else:\prg_return_false: \fi:}
\prg_set_conditional:Npnn \cs_if_eq_name:NN #1#2{p}{
- \exp_after:wN\exp_after:wN
- \exp_after:wN\str_if_eq_p_aux:w
- \exp_after:wN\token_to_str:N
- \exp_after:wN#1
- \exp_after:wN\scan_stop:
- \exp_after:wN\\
- \token_to_str:N#2\scan_stop:\\}
-\prg_set_conditional:Npnn \str_if_eq_var:nf #1#2 {p} {
- \if:w \tex_number:D\str_if_eq_var_start:nnN{}{}#1\scan_stop:{#2}
-}
-\cs_set_nopar:Npn\str_if_eq_var_start:nnN#1#2#3{
- \if:w#3\scan_stop:\exp_after:wN\str_if_eq_var_stop:w\fi:
- \str_if_eq_var_start:nnN{\if:w#3#1}{#2\fi:}
-}
-\cs_set:Npn\str_if_eq_var_stop:w\str_if_eq_var_start:nnN#1#2#3{
- #1#3\scan_stop:'#213~\prg_return_true:\else:\prg_return_false:\fi:
+ \str_if_eq_p:nn {#1} {#2}
}
\cs_set:Npn \cs_tmp:w #1#2 {
\cs_set_protected_nopar:Npn #1 ##1
@@ -613,11 +599,11 @@
\fi:
{
\exp_after:wN \cs_get_arg_count_from_signature_auxii:w
- \use_none:nnnnnnnnn #2 9876543210\q_nil
+ \use_none:nnnnnnnnn #2 9876543210\q_stop
}
{-1}
}
-\cs_set:Npn \cs_get_arg_count_from_signature_auxii:w #1#2\q_nil{#1}
+\cs_set:Npn \cs_get_arg_count_from_signature_auxii:w #1#2\q_stop{#1}
\cs_set_nopar:Npn \cs_get_arg_count_from_signature:c {
\exp_args:Nc \cs_get_arg_count_from_signature:N
}
diff --git a/Master/texmf-dist/tex/latex/expl3/l3box.sty b/Master/texmf-dist/tex/latex/expl3/l3box.sty
index 484e7c4a635..3982125a979 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3box.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3box.sty
@@ -48,7 +48,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3box.dtx 2015 2010-09-03 17:45:09Z mittelba $
+\GetIdInfo$Id: l3box.dtx 2044 2010-09-22 03:34:46Z will $
{L3 Experimental Box module}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -109,6 +109,18 @@
\cs_generate_variant:Nn \box_ht:N {c}
\cs_generate_variant:Nn \box_dp:N {c}
\cs_generate_variant:Nn \box_wd:N {c}
+\cs_new_protected_nopar:Npn \box_set_dp:Nn #1#2 {
+ \box_dp:N #1 \etex_dimexpr:D #2 \scan_stop:
+}
+\cs_new_protected_nopar:Npn \box_set_ht:Nn #1#2 {
+ \box_ht:N #1 \etex_dimexpr:D #2 \scan_stop:
+}
+\cs_new_protected_nopar:Npn \box_set_wd:Nn #1#2 {
+ \box_wd:N #1 \etex_dimexpr:D #2 \scan_stop:
+}
+\cs_generate_variant:Nn \box_set_ht:Nn { c }
+\cs_generate_variant:Nn \box_set_dp:Nn { c }
+\cs_generate_variant:Nn \box_set_wd:Nn { c }
\cs_new_eq:NN \box_use_clear:N \tex_box:D
\cs_generate_variant:Nn \box_use_clear:N {c}
\cs_new_eq:NN \box_use:N \tex_copy:D
diff --git a/Master/texmf-dist/tex/latex/expl3/l3clist.sty b/Master/texmf-dist/tex/latex/expl3/l3clist.sty
index e99dfef6703..257c7209ba8 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3clist.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3clist.sty
@@ -48,7 +48,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3clist.dtx 1992 2010-08-04 20:41:40Z joseph $
+\GetIdInfo$Id: l3clist.dtx 2037 2010-09-20 21:22:45Z joseph $
{L3 Experimental comma separated lists}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -214,7 +214,7 @@
\cs_new_protected:Npn \clist_remove_element_aux:NNn #1#2#3 {
\clist_clear:N \l_clist_remove_clist
\cs_set:Npn \clist_remove_element_aux:n ##1 {
- \tl_if_eq:nnF {#3} {##1} {
+ \str_if_eq:nnF {#3} {##1} {
\clist_put_right:Nn \l_clist_remove_clist {##1}
}
}
diff --git a/Master/texmf-dist/tex/latex/expl3/l3doc.cls b/Master/texmf-dist/tex/latex/expl3/l3doc.cls
index b31d5e6ceb0..09ece930f47 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3doc.cls
+++ b/Master/texmf-dist/tex/latex/expl3/l3doc.cls
@@ -53,7 +53,7 @@
\let \filedateOld \filedate
\let \fileversionOld \fileversion
\let \filedescriptionOld \filedescription
-\GetIdInfo$Id: l3doc.dtx 2004 2010-08-18 19:39:24Z joseph $
+\GetIdInfo$Id: l3doc.dtx 2037 2010-09-20 21:22:45Z joseph $
{L3 Experimental documentation class}
\ProvidesExplClass
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -262,7 +262,7 @@
\cs_set_nopar:Npn \doc_showmacro_aux_ii:w #1:#2:#3 \q_stop {
\nextnewline
- \tl_if_eq:xxTF {#1} {\g_doc_macro_tl} {
+ \str_if_eq:xxTF {#1} {\g_doc_macro_tl} {
\doc_typeset_aux:n
}{
\tl_gset:Nn \g_doc_macro_tl {#1}
diff --git a/Master/texmf-dist/tex/latex/expl3/l3expan.sty b/Master/texmf-dist/tex/latex/expl3/l3expan.sty
index ddfce301801..7f52c7a22be 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3expan.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3expan.sty
@@ -15,7 +15,7 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3expan.dtx Copyright (C) 1990-2009 LaTeX3 project
+%% File: l3expan.dtx Copyright (C) 1990-2010 LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -48,7 +48,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3expan.dtx 1991 2010-08-04 19:49:35Z joseph $
+\GetIdInfo$Id: l3expan.dtx 2037 2010-09-20 21:22:45Z joseph $
{L3 Experimental Argument Expansion module}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -244,15 +244,15 @@
\cs_new_nopar:Npn \_cs_generate_variant_aux:Ncpx #1
{
\exp_after:wN \_cs_generate_variant_aux:w
- \tex_meaning:D #1 ? PROTECTEZ \q_nil
+ \tex_meaning:D #1 ? PROTECTEZ \q_stop
}
\cs_new_nopar:Npn \_cs_generate_variant_aux:ccpx
{ \exp_args:Nc \_cs_generate_variant_aux:Ncpx}
\cs_new:Npn \_cs_generate_variant_aux:w
- #1 ? PROTECTEZ #2 \q_nil
+ #1 ? PROTECTEZ #2 \q_stop
{
\exp_after:wN \tex_ifx:D \exp_after:wN
- \q_nil \etex_detokenize:D {#1} \q_nil
+ \q_no_value \etex_detokenize:D {#1} \q_no_value
\exp_after:wN \cs_new_protected_nopar:cpx
\tex_else:D
\exp_after:wN \cs_new_nopar:cpx
@@ -309,6 +309,26 @@
\cs_new:Npn \exp_last_unbraced:NNNo #1#2#3#4 {
\exp_after:wN #1 \exp_after:wN #2 \exp_after:wN #3 #4
}
+\cs_generate_variant:Nn \str_if_eq_p:nn { V }
+\cs_generate_variant:Nn \str_if_eq_p:nn { o }
+\cs_generate_variant:Nn \str_if_eq_p:nn { nV }
+\cs_generate_variant:Nn \str_if_eq_p:nn { no }
+\cs_generate_variant:Nn \str_if_eq_p:nn { VV }
+\cs_generate_variant:Nn \str_if_eq:nnT { V }
+\cs_generate_variant:Nn \str_if_eq:nnT { o }
+\cs_generate_variant:Nn \str_if_eq:nnT { nV }
+\cs_generate_variant:Nn \str_if_eq:nnT { no }
+\cs_generate_variant:Nn \str_if_eq:nnT { VV }
+\cs_generate_variant:Nn \str_if_eq:nnF { V }
+\cs_generate_variant:Nn \str_if_eq:nnF { o }
+\cs_generate_variant:Nn \str_if_eq:nnF { nV }
+\cs_generate_variant:Nn \str_if_eq:nnF { no }
+\cs_generate_variant:Nn \str_if_eq:nnF { VV }
+\cs_generate_variant:Nn \str_if_eq:nnTF { V }
+\cs_generate_variant:Nn \str_if_eq:nnTF { o }
+\cs_generate_variant:Nn \str_if_eq:nnTF { nV }
+\cs_generate_variant:Nn \str_if_eq:nnTF { no }
+\cs_generate_variant:Nn \str_if_eq:nnTF { VV }
%%
%%
%% End of file `l3expan.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3fp.sty b/Master/texmf-dist/tex/latex/expl3/l3fp.sty
index 8b7f7b67093..a94e6c3763e 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3fp.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3fp.sty
@@ -48,7 +48,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3fp.dtx 2021 2010-09-14 15:59:54Z joseph $
+\GetIdInfo$Id: l3fp.dtx 2029 2010-09-19 13:59:02Z joseph $
{L3 Experimental floating-point operations}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -152,23 +152,23 @@
}
\cs_new_protected_nopar:Npn \fp_split_sign: {
\tex_ifnum:D \pdf_strcmp:D
- { \exp_after:wN \tl_head:w \l_fp_tmp_tl ? \q_nil } { - }
+ { \exp_after:wN \tl_head:w \l_fp_tmp_tl ? \q_stop } { - }
= \c_zero
\tl_set:Nx \l_fp_tmp_tl
{
\exp_after:wN
- \tl_tail:w \l_fp_tmp_tl \prg_do_nothing: \q_nil
+ \tl_tail:w \l_fp_tmp_tl \prg_do_nothing: \q_stop
}
\l_fp_split_sign_int -\l_fp_split_sign_int
\exp_after:wN \fp_split_sign:
\tex_else:D
\tex_ifnum:D \pdf_strcmp:D
- { \exp_after:wN \tl_head:w \l_fp_tmp_tl ? \q_nil } { + }
+ { \exp_after:wN \tl_head:w \l_fp_tmp_tl ? \q_stop } { + }
= \c_zero
\tl_set:Nx \l_fp_tmp_tl
{
\exp_after:wN
- \tl_tail:w \l_fp_tmp_tl \prg_do_nothing: \q_nil
+ \tl_tail:w \l_fp_tmp_tl \prg_do_nothing: \q_stop
}
\exp_after:wN \exp_after:wN \exp_after:wN
\fp_split_sign:
diff --git a/Master/texmf-dist/tex/latex/expl3/l3int.sty b/Master/texmf-dist/tex/latex/expl3/l3int.sty
index 6909f182286..44c910a145c 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3int.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3int.sty
@@ -15,7 +15,7 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3int.dtx Copyright (C) 1990-2009 LaTeX3 project
+%% File: l3int.dtx Copyright (C) 1990-2010 LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -48,7 +48,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3int.dtx 1933 2010-05-25 00:26:38Z will $
+\GetIdInfo$Id: l3int.dtx 2029 2010-09-19 13:59:02Z joseph $
{L3 Experimental Integer module}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -338,10 +338,10 @@
}
}
\cs_new_nopar:Npn \int_convert_to_base_ten_aux:nn #1#2{
- \int_convert_to_base_ten_auxi:nnN {0}{#2} #1 \q_nil
+ \int_convert_to_base_ten_auxi:nnN {0}{#2} #1 \q_no_value
}
\cs_new_nopar:Npn \int_convert_to_base_ten_auxi:nnN#1#2#3{
- \quark_if_nil:NTF #3
+ \quark_if_no_value:NTF #3
{#1}
{\exp_args:Nf\int_convert_to_base_ten_auxi:nnN
{\intexpr_eval:n{ #1*#2+\int_convert_letter_to_number:N #3} }
diff --git a/Master/texmf-dist/tex/latex/expl3/l3intexpr.sty b/Master/texmf-dist/tex/latex/expl3/l3intexpr.sty
index 268881a29df..d751152223b 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3intexpr.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3intexpr.sty
@@ -15,7 +15,7 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3intexpr.dtx Copyright (C) 2009 LaTeX3 project
+%% File: l3intexpr.dtx Copyright (C) 2009-2010 LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -48,7 +48,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3intexpr.dtx 1957 2010-06-15 06:33:43Z mittelba $
+\GetIdInfo$Id: l3intexpr.dtx 2045 2010-09-22 03:59:34Z will $
{L3 Integer Expressions}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -70,39 +70,39 @@
}
\cs_set:Npn \intexpr_compare_auxi:w #1#2\q_stop{
\exp_after:wN \intexpr_compare_auxii:w \tex_romannumeral:D
- \if:w #1- \else: -\fi: #1#2 \q_stop #1#2 \q_nil
+ \if:w #1- \else: -\fi: #1#2 \q_mark #1#2 \q_stop
}
-\cs_set:Npn \intexpr_compare_auxii:w #1#2#3\q_stop{
+\cs_set:Npn \intexpr_compare_auxii:w #1#2#3\q_mark{
\use:c{
intexpr_compare_
#1 \if_meaning:w =#2 = \fi:
:w}
}
-\cs_set:cpn {intexpr_compare_=:w} #1=#2\q_nil{
+\cs_set:cpn {intexpr_compare_=:w} #1=#2\q_stop{
\if_intexpr_compare:w #1=\intexpr_eval:w #2 \intexpr_eval_end:
\prg_return_true: \else: \prg_return_false: \fi:
}
-\cs_set:cpn {intexpr_compare_==:w} #1==#2\q_nil{
+\cs_set:cpn {intexpr_compare_==:w} #1==#2\q_stop{
\if_intexpr_compare:w #1=\intexpr_eval:w #2 \intexpr_eval_end:
\prg_return_true: \else: \prg_return_false: \fi:
}
-\cs_set:cpn {intexpr_compare_!=:w} #1!=#2\q_nil{
+\cs_set:cpn {intexpr_compare_!=:w} #1!=#2\q_stop{
\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{
+\cs_set:cpn {intexpr_compare_<:w} #1<#2\q_stop{
\if_intexpr_compare:w #1<\intexpr_eval:w #2 \intexpr_eval_end:
\prg_return_true: \else: \prg_return_false: \fi:
}
-\cs_set:cpn {intexpr_compare_>:w} #1>#2\q_nil{
+\cs_set:cpn {intexpr_compare_>:w} #1>#2\q_stop{
\if_intexpr_compare:w #1>\intexpr_eval:w #2 \intexpr_eval_end:
\prg_return_true: \else: \prg_return_false: \fi:
}
-\cs_set:cpn {intexpr_compare_<=:w} #1<=#2\q_nil{
+\cs_set:cpn {intexpr_compare_<=:w} #1<=#2\q_stop{
\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{
+\cs_set:cpn {intexpr_compare_>=:w} #1>=#2\q_stop{
\if_intexpr_compare:w #1<\intexpr_eval:w #2 \intexpr_eval_end:
\prg_return_false: \else: \prg_return_true: \fi:
}
diff --git a/Master/texmf-dist/tex/latex/expl3/l3luatex.sty b/Master/texmf-dist/tex/latex/expl3/l3luatex.sty
index 0aa6468d7e8..49f232528f4 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3luatex.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3luatex.sty
@@ -148,25 +148,6 @@
\cs_new_eq:NN \c_other_cctab \CatcodeTableOther
\cs_new_eq:NN \c_string_cctab \CatcodeTableString
}
-\luatex_if_engine:T {
- \cs_set_protected_nopar:Npn \ExplSyntaxOn
- {
- \tex_ifodd:D \ExplSyntaxStatus \scan_stop:
- \tex_else:D
- \cs_set_protected_nopar:Npx \ExplSyntaxOff
- {
- \cctab_end:
- \tex_endlinechar:D =
- \tex_the:D \tex_endlinechar:D \scan_stop:
- \cs_set_protected:Npn \ExplSyntaxOff { }
- \tl_set:Nn \exp_not:N \ExplSyntaxStatus { 0 }
- }
- \tl_set:Nn \ExplSyntaxStatus { 1 }
- \cctab_begin:N \c_code_cctab
- \tex_endlinechar:D = 32 \scan_stop:
- \tex_fi:D
- }
-}
%%
%%
%% End of file `l3luatex.sty'.
diff --git a/Master/texmf-dist/tex/latex/expl3/l3names.sty b/Master/texmf-dist/tex/latex/expl3/l3names.sty
index dce13baccdb..e3fbe730eae 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3names.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3names.sty
@@ -15,7 +15,7 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3names.dtx Copyright (C) 1990-2006,2009 LaTeX3 project
+%% File: l3names.dtx Copyright (C) 1990-2006,2009-2010 LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -48,7 +48,7 @@
%%
%% -----------------------------------------------------------------------
\begingroup
-\protected\def\GetIdInfo$#1${%
+\def\GetIdInfo$#1${%
\begingroup
\def\GetIdInfoString{#1}%
\def\IdInfoStringUnexp{Id}%
@@ -59,53 +59,37 @@
\fi
\next
}
-\protected\def\GetIdInfoFull$#1 #2.#3 #4 #5 #6 #7${%
+\def\GetIdInfoFull$#1 #2.#3 #4 #5 #6 #7${%
\GetIdInfoAux #5\relax{#2}#5\relax{#4}%
}
-\protected\def\GetIdInfoAux #1#2#3#4#5#6\relax{%
+\def\GetIdInfoAux #1#2#3#4#5#6\relax{%
\ifx#5/%
\expandafter\GetIdInfoAuxCVS
\else
\expandafter\GetIdInfoAuxSVN
\fi
}
-\protected\def\GetIdInfoAuxCVS #1#2\relax#3#4{%
+\def\GetIdInfoAuxCVS #1#2\relax#3#4{%
\gdef\fileversion{#3}%
\gdef\filedate{#2}%
\gdef\filedescription{#4}%
\ProvidesPackage{#1}[#2 v#3 #4]%
}
-\protected\def\GetIdInfoAuxSVN #1#2-#3-#4\relax#5#6{%
+\def\GetIdInfoAuxSVN #1#2-#3-#4\relax#5#6{%
\gdef\fileversion{#5}%
\gdef\filedate{#2/#3/#4}%
\gdef\filedescription{#6}%
\ProvidesPackage{#1}[#2/#3/#4 v#5 #6]
}
-\protected\def\GetIdInfoMissing#1{%
+\def\GetIdInfoMissing#1{%
\gdef\fileversion{000}%
\gdef\filedate{0000/00/00}%
\gdef\filedescription{#1}%
\ProvidesPackage{[unknown package]}[0000/00/00 v0.0 #1]
}
-\GetIdInfo$Id: l3names.dtx 1987 2010-07-25 14:55:46Z joseph $
+\GetIdInfo$Id: l3names.dtx 2034 2010-09-20 20:17:43Z joseph $
{L3 Experimental Naming Scheme for TeX Primitives}
\endgroup
-\begingroup
-\def\firstoftwo#1#2{#1}
-\def\secondoftwo#1#2{#2}
-\def\etexmissingerror{Not running under e-TeX}
-\def\etexmissinghelp{%
- This package requires e-TeX.^^J%
- Try compiling the document with `elatex' instead of `latex'.^^J%
- When using pdfTeX, try `pdfelatex' instead of `pdflatex'%
-}%
-\expandafter\ifx\csname eTeXversion\endcsname\relax
- \expandafter\secondoftwo\else\expandafter\firstoftwo\fi
- {\endgroup}{%
- \PackageError{l3names}{\etexmissingerror}{\etexmissinghelp}%
- \endgroup
- \endinput
- }
\def\@tempa{%
\def\@tempa{}%
\RequirePackage{luatex}%
@@ -117,6 +101,26 @@
\else
\expandafter\@tempa
\fi
+\begingroup\expandafter\expandafter\expandafter\endgroup
+ \ifx\csname pdfstrcmp\endcsname\relax
+ \let\pdfstrcmp\strcmp
+\fi
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\ifx\csname pdfstrcmp\endcsname\relax
+ \PackageError{l3names}{Required primitives not found}
+ {%
+ LaTeX3 requires the e-TeX primitives and
+ \string\pdfstrcmp.\MessageBreak
+ These are available in engine versions: \MessageBreak
+ - pdfTeX 1.30 \MessageBreak
+ - XeTeX 0.9994 \MessageBreak
+ - LuaTeX 0.60 \MessageBreak
+ or later. \MessageBreak
+ \MessageBreak
+ Loading of l3names will abort!
+ }
+ \expandafter\endinput
+\fi
\protected\edef\ExplSyntaxOff{
\unexpanded{\ifodd \ExplSyntaxStatus\relax
\def\ExplSyntaxStatus{0}
@@ -685,7 +689,7 @@
\tex_endlinechar:D =32 \tex_relax:D % endline is space
\tex_catcode:D 95=11 \tex_relax:D % underscore letter
\tex_catcode:D 58=11 \tex_relax:D % colon letter
- \tex_catcode:D 124=11 \tex_relax:D % vertical bar, other
+ \tex_catcode:D 124=12 \tex_relax:D % vertical bar, other
\tex_catcode:D 38=4 \tex_relax:D % ampersand, alignment token
\tex_catcode:D 94=7 \tex_relax:D % caret, math superscript
\tex_catcode:D 34=12 \tex_relax:D % doublequote, other
@@ -776,11 +780,11 @@
\tex_if:D 2\ExplSyntaxStack 2
\ExplSyntaxOff
\tex_else:D
- \tex_expandafter:D\ExplSyntaxPopStack\ExplSyntaxStack\q_nil
+ \tex_expandafter:D\ExplSyntaxPopStack\ExplSyntaxStack\q_stop
\tex_fi:D
}
}
-\etex_protected:D\tex_def:D\ExplSyntaxPopStack#1#2\q_nil{
+\etex_protected:D\tex_def:D\ExplSyntaxPopStack#1#2\q_stop{
\tex_def:D\ExplSyntaxStack{#2}
\tex_ifodd:D#1\tex_relax:D
\ExplSyntaxOn
diff --git a/Master/texmf-dist/tex/latex/expl3/l3prg.sty b/Master/texmf-dist/tex/latex/expl3/l3prg.sty
index 38112ebffa8..b4f8ec44ed6 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3prg.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3prg.sty
@@ -15,7 +15,7 @@
%% Do not distribute a modified version of this file.
%%
%%
-%% File: l3prg.dtx Copyright (C) 2005-2009 LaTeX3 project
+%% File: l3prg.dtx Copyright (C) 2005-2010 LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -48,7 +48,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3prg.dtx 1992 2010-08-04 20:41:40Z joseph $
+\GetIdInfo$Id: l3prg.dtx 2043 2010-09-22 02:10:43Z will $
{L3 Experimental control structures}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -239,31 +239,59 @@
#2 \bool_if:NF #1 {\bool_do_until:Nn #1 {#2}}
}
\cs_generate_variant:Nn \bool_do_until:Nn {c}
-\cs_set:Npn \bool_if_p:n #1{
+\cs_new:Npn \bool_if_p:n #1{
\group_align_safe_begin:
\bool_get_next:N ( #1 )S
}
-\cs_set:Npn \bool_get_next:N #1{
+\cs_new:Npn \bool_get_next:N #1{
\use:c {
bool_
\if_meaning:w !#1 ! \else: \if_meaning:w (#1 ( \else: p \fi: \fi:
:w
} #1
}
-\cs_set:cpn { bool_!:w } #1#2 {
+\cs_new:Npn \bool_get_not_next:N #1{
+ \use:c {
+ bool_not_
+ \if_meaning:w !#1 ! \else: \if_meaning:w (#1 ( \else: p \fi: \fi:
+ :w
+ } #1
+}
+\cs_new:Npn \bool_get_next:NN #1#2{
+ \bool_get_next:N #2
+}
+\cs_new:Npn \bool_get_not_next:NN #1#2{
+ \bool_get_not_next:N #2
+}
+\cs_new:cpn { bool_!:w } #1#2 {
\if_meaning:w ( #2
\exp_after:wN \bool_Not:w
\else:
\if_meaning:w ! #2
- \exp_after:wN \exp_after:wN \exp_after:wN \use_none:n
+ \exp_after:wN \exp_after:wN \exp_after:wN \bool_get_next:NN
\else:
\exp_after:wN \exp_after:wN \exp_after:wN \bool_Not:N
\fi:
\fi:
#2
}
+\cs_new:cpn { bool_not_!:w } #1#2 {
+ \if_meaning:w ( #2
+ \exp_after:wN \bool_not_Not:w
+ \else:
+ \if_meaning:w ! #2
+ \exp_after:wN \exp_after:wN \exp_after:wN \bool_get_not_next:NN
+ \else:
+ \exp_after:wN \exp_after:wN \exp_after:wN \bool_not_Not:N
+ \fi:
+ \fi:
+ #2
+}
\cs_new:Npn \bool_Not:w {
- \exp_after:wN \intexpr_if_even_p:n \tex_number:D \bool_get_next:N
+ \exp_after:wN \tex_number:D \bool_get_not_next:N
+}
+\cs_new:Npn \bool_not_Not:w {
+ \exp_after:wN \tex_number:D \bool_get_next:N
}
\cs_new:Npn \bool_Not:N #1 {
\exp_after:wN \bool_p:w
@@ -273,32 +301,55 @@
\c_true_bool
\fi:
}
-\cs_set:cpn {bool_(:w}#1{
+\cs_new:Npn \bool_not_Not:N #1 {
+ \exp_after:wN \bool_p:w
+ \if_meaning:w #1 \c_true_bool
+ \c_true_bool
+ \else:
+ \c_false_bool
+ \fi:
+}
+\cs_new:cpn {bool_(:w}#1{
\exp_after:wN \bool_cleanup:N \tex_number:D \bool_get_next:N
}
-\cs_set:cpn {bool_p:w}{\exp_after:wN \bool_cleanup:N \tex_number:D }
+\cs_new:cpn {bool_not_(:w}#1{
+ \exp_after:wN \bool_not_cleanup:N \tex_number:D \bool_get_next:N
+}
+\cs_new:cpn {bool_p:w}{\exp_after:wN \bool_cleanup:N \tex_number:D }
+\cs_new:cpn {bool_not_p:w}{\exp_after:wN \bool_not_cleanup:N \tex_number:D }
\cs_new_nopar:Npn \bool_cleanup:N #1{
\exp_after:wN \bool_choose:NN \exp_after:wN #1
\int_to_roman:w-`\q
}
+\cs_new_nopar:Npn \bool_not_cleanup:N #1{
+ \exp_after:wN \bool_not_choose:NN \exp_after:wN #1
+ \int_to_roman:w-`\q
+}
\cs_new_nopar:Npn \bool_choose:NN #1#2{ \use:c{bool_#2_#1:w} }
+\cs_new_nopar:Npn \bool_not_choose:NN #1#2{ \use:c{bool_not_#2_#1:w} }
\cs_new_nopar:cpn{bool_&_1:w}&{\bool_get_next:N}
\cs_new_nopar:cpn{bool_|_0:w}|{\bool_get_next:N}
+\cs_new_nopar:cpn{bool_not_&_0:w}&{\bool_get_next:N}
+\cs_new_nopar:cpn{bool_not_|_1:w}|{\bool_get_next:N}
\cs_new_nopar:cpn{bool_)_0:w}{ \c_false_bool }
\cs_new_nopar:cpn{bool_)_1:w}{ \c_true_bool }
+\cs_new_nopar:cpn{bool_not_)_0:w}{ \c_true_bool }
+\cs_new_nopar:cpn{bool_not_)_1:w}{ \c_false_bool }
\cs_new_nopar:cpn{bool_S_0:w}{\group_align_safe_end: \c_false_bool }
\cs_new_nopar:cpn{bool_S_1:w}{\group_align_safe_end: \c_true_bool }
-\cs_set:cpn{bool_&_0:w}&{\bool_eval_skip_to_end:Nw \c_false_bool}
-\cs_set:cpn{bool_|_1:w}|{\bool_eval_skip_to_end:Nw \c_true_bool}
-\cs_set:Npn \bool_eval_skip_to_end:Nw #1#2){
- \bool_eval_skip_to_end_aux:Nw #1 #2(\q_no_value\q_nil{#2}
-}
-\cs_set:Npn \bool_eval_skip_to_end_aux:Nw #1#2(#3#4\q_nil#5{
+\cs_new:cpn{bool_&_0:w}&{\bool_eval_skip_to_end:Nw \c_false_bool}
+\cs_new:cpn{bool_|_1:w}|{\bool_eval_skip_to_end:Nw \c_true_bool}
+\cs_new:cpn{bool_not_&_1:w}&{\bool_eval_skip_to_end:Nw \c_false_bool}
+\cs_new:cpn{bool_not_|_0:w}|{\bool_eval_skip_to_end:Nw \c_true_bool}
+\cs_new:Npn \bool_eval_skip_to_end:Nw #1#2){
+ \bool_eval_skip_to_end_aux:Nw #1 #2(\q_no_value\q_stop{#2}
+}
+\cs_new:Npn \bool_eval_skip_to_end_aux:Nw #1#2(#3#4\q_stop#5{
\quark_if_no_value:NTF #3
{ #1 }
{ \bool_eval_skip_to_end_auxii:Nw #1 #5 }
}
-\cs_set:Npn \bool_eval_skip_to_end_auxii:Nw #1#2(#3){
+\cs_new:Npn \bool_eval_skip_to_end_auxii:Nw #1#2(#3){
\bool_eval_skip_to_end:Nw #1#3 )
}
\cs_new:Npn \bool_set:Nn #1#2 {\tex_chardef:D #1 = \bool_if_p:n {#2}}
@@ -354,7 +405,7 @@
}
\cs_new:Npn \prg_case_str_aux:nnn #1#2#3{
\quark_if_recursion_tail_stop_do:nn{#2}{\use:n}
- \tl_if_eq:xxTF{#1}{#2}
+ \str_if_eq:xxTF{#1}{#2}
{ \prg_end_case:nw {#3} }
{ \prg_case_str_aux:nnn {#1}}
}
@@ -455,9 +506,9 @@
\group_end:
\cs_new_nopar:Npn \prg_variable_get_scope:N #1 {
\exp_last_unbraced:Nf \prg_variable_get_scope_aux:w
- { \cs_to_str:N #1 \exp_stop_f: \q_nil }
+ { \cs_to_str:N #1 \exp_stop_f: \q_stop }
}
- \cs_new_nopar:Npn \prg_variable_get_scope_aux:w #1#2 \q_nil {
+ \cs_new_nopar:Npn \prg_variable_get_scope_aux:w #1#2 \q_stop {
\token_if_eq_meaning:NNT & #1 {g}
}
}
@@ -468,13 +519,13 @@
\group_end:
\cs_new_nopar:Npn \prg_variable_get_type:N #1 {
\exp_after:wN \p;rg_variable_get_type_aux:w
- \token_to_str:N #1 & a \q_nil
+ \token_to_str:N #1 & a \q_stop
}
- \cs_new_nopar:Npn \prg_variable_get_type_aux:w #1 & #2#3 \q_nil {
+ \cs_new_nopar:Npn \prg_variable_get_type_aux:w #1 & #2#3 \q_stop {
\token_if_eq_meaning:NNTF a #2 {
#1
}{
- \prg_variable_get_type_aux:w #2#3 \q_nil
+ \prg_variable_get_type_aux:w #2#3 \q_stop
}
}
}
diff --git a/Master/texmf-dist/tex/latex/expl3/l3quark.sty b/Master/texmf-dist/tex/latex/expl3/l3quark.sty
index 79e0f26f0b3..3fb3d4ee1f8 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3quark.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3quark.sty
@@ -48,7 +48,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3quark.dtx 1853 2010-03-21 09:11:08Z joseph $
+\GetIdInfo$Id: l3quark.dtx 2036 2010-09-20 20:33:54Z joseph $
{L3 Experimental Quark Commands}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -63,7 +63,7 @@
\quark_new:N\q_recursion_stop
\cs_new:Npn \quark_if_recursion_tail_stop:n #1 {
\exp_after:wN\if_meaning:w
- \quark_if_recursion_tail_aux:w #1?\q_nil\q_recursion_tail\q_recursion_tail
+ \quark_if_recursion_tail_aux:w #1?\q_stop\q_recursion_tail\q_recursion_tail
\exp_after:wN \use_none_delimit_by_q_recursion_stop:w
\fi:
}
@@ -75,7 +75,7 @@
\cs_generate_variant:Nn \quark_if_recursion_tail_stop:n {o}
\cs_new:Npn \quark_if_recursion_tail_stop_do:nn #1#2 {
\exp_after:wN\if_meaning:w
- \quark_if_recursion_tail_aux:w #1?\q_nil\q_recursion_tail\q_recursion_tail
+ \quark_if_recursion_tail_aux:w #1?\q_stop\q_recursion_tail\q_recursion_tail
\exp_after:wN \use_i_delimit_by_q_recursion_stop:nw
\else:
\exp_after:wN\use_none:n
@@ -91,52 +91,27 @@
{#2}
}
\cs_generate_variant:Nn \quark_if_recursion_tail_stop_do:nn {on}
-\cs_new:Npn \quark_if_recursion_tail_aux:w #1#2 \q_nil \q_recursion_tail {#1}
+\cs_new:Npn \quark_if_recursion_tail_aux:w #1#2 \q_stop \q_recursion_tail {#1}
\prg_new_conditional:Nnn \quark_if_no_value:N {p,TF,T,F} {
\if_meaning:w \q_no_value #1
\prg_return_true: \else: \prg_return_false: \fi:
}
-\cs_if_exist:cTF {pdf_strcmp:D}
-{
- \prg_new_conditional:Nnn \quark_if_no_value:n {p,TF,T,F} {
- \if_num:w \pdf_strcmp:D
- {\exp_not:N \q_no_value}
- {\exp_not:n{#1}} = \c_zero
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
-}
-{
- \prg_new_conditional:Nnn \quark_if_no_value:n {p,TF,T,F} {
- \exp_args:NNo
- \if_predicate:w \str_if_eq_var_p:nf
- {\token_to_str:N\q_no_value\c_space_tl}
- {\tl_to_str:n{#1}}
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
+\prg_new_conditional:Nnn \quark_if_no_value:n {p,TF,T,F} {
+ \if_num:w \pdf_strcmp:D
+ {\exp_not:N \q_no_value}
+ {\exp_not:n{#1}} = \c_zero
+ \prg_return_true: \else: \prg_return_false:
+ \fi:
}
\prg_new_conditional:Nnn \quark_if_nil:N {p,TF,T,F} {
\if_meaning:w \q_nil #1 \prg_return_true: \else: \prg_return_false: \fi:
}
-\cs_if_exist:cTF {pdf_strcmp:D} {
- \prg_new_conditional:Nnn \quark_if_nil:n {p,TF,T,F} {
- \if_num:w \pdf_strcmp:D
- {\exp_not:N \q_nil}
- {\exp_not:n{#1}} = \c_zero
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
-}
-{
- \prg_new_conditional:Nnn \quark_if_nil:n {p,TF,T,F} {
- \exp_args:NNo
- \if_predicate:w \str_if_eq_var_p:nf
- {\token_to_str:N\q_nil\c_space_tl}
- {\tl_to_str:n{#1}}
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
+\prg_new_conditional:Nnn \quark_if_nil:n {p,TF,T,F} {
+ \if_num:w \pdf_strcmp:D
+ {\exp_not:N \q_nil}
+ {\exp_not:n{#1}} = \c_zero
+ \prg_return_true: \else: \prg_return_false:
+ \fi:
}
\cs_generate_variant:Nn \quark_if_nil_p:n {V}
\cs_generate_variant:Nn \quark_if_nil:nTF {V}
diff --git a/Master/texmf-dist/tex/latex/expl3/l3skip.sty b/Master/texmf-dist/tex/latex/expl3/l3skip.sty
index 86bf7cf1d43..b6f10c5127d 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3skip.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3skip.sty
@@ -48,7 +48,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3skip.dtx 1933 2010-05-25 00:26:38Z will $
+\GetIdInfo$Id: l3skip.dtx 2047 2010-09-23 09:27:30Z will $
{L3 Experimental skip registers}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -171,6 +171,51 @@
\if_dim:w \dim_eval:n {#1} #2 \dim_eval:n {#3}
\prg_return_true: \else: \prg_return_false: \fi:
}
+\cs_set_eq:NN \dim_value:w \tex_number:D
+\cs_set_eq:NN \dim_eval:w \etex_dimexpr:D
+\cs_set_eq:NN \if_dim_compare:w \if_dim:w
+\cs_set_eq:NN \dim_eval_end: \scan_stop:
+\prg_new_conditional:Npnn \dim_compare:n #1 {p,TF,T,F} {
+ \exp_after:wN \dim_compare_auxi:w \dim_value:w
+ \dim_eval:w #1 \q_stop
+}
+\cs_new:Npn \dim_compare_auxi:w #1#2 \q_stop {
+ \exp_after:wN \dim_compare_auxii:w \tex_romannumeral:D
+ \if:w #1- \else: -\fi: #1#2 \q_mark #1#2 \q_stop
+}
+\cs_new:Npn \dim_compare_auxii:w #1#2#3\q_mark{
+ \use:c{
+ dim_compare_ #1 \if_meaning:w =#2 = \fi:
+ :w}
+}
+\cs_new:cpn {dim_compare_=:w} #1 = #2 \q_stop {
+ \if_dim_compare:w #1 sp = \dim_eval:w #2 \dim_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\cs_new:cpn {dim_compare_==:w} #1 == #2 \q_stop {
+ \if_dim_compare:w #1 sp = \dim_eval:w #2 \dim_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\cs_new:cpn {dim_compare_!=:w} #1 != #2 \q_stop {
+ \if_dim_compare:w #1 sp = \dim_eval:w #2 \dim_eval_end:
+ \prg_return_false: \else: \prg_return_true: \fi:
+}
+\cs_new:cpn {dim_compare_<:w} #1 < #2 \q_stop {
+ \if_dim_compare:w #1 sp < \dim_eval:w #2 \dim_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\cs_new:cpn {dim_compare_>:w} #1 > #2 \q_stop {
+ \if_dim_compare:w #1 sp > \dim_eval:w #2 \dim_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\cs_new:cpn {dim_compare_<=:w} #1 <= #2 \q_stop {
+ \if_dim_compare:w #1 sp > \dim_eval:w #2 \dim_eval_end:
+ \prg_return_false: \else: \prg_return_true: \fi:
+}
+\cs_new:cpn {dim_compare_>=:w} #1 >= #2 \q_stop {
+ \if_dim_compare:w #1 sp < \dim_eval:w #2 \dim_eval_end:
+ \prg_return_false: \else: \prg_return_true: \fi:
+}
\cs_new_nopar:Npn \dim_while_do:nNnn #1#2#3#4{
\dim_compare:nNnT {#1}#2{#3}{#4 \dim_while_do:nNnn {#1}#2{#3}{#4}}
}
diff --git a/Master/texmf-dist/tex/latex/expl3/l3tl.sty b/Master/texmf-dist/tex/latex/expl3/l3tl.sty
index c55f9dc82ab..19df9805a95 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3tl.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3tl.sty
@@ -48,7 +48,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3tl.dtx 1919 2010-05-22 05:56:38Z will $
+\GetIdInfo$Id: l3tl.dtx 2040 2010-09-21 18:11:09Z joseph $
{L3 Experimental Token Lists}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -229,6 +229,20 @@
\cs_generate_variant:Nn \tl_if_eq:NNTF {Nc,c,cc}
\cs_generate_variant:Nn \tl_if_eq:NNT {Nc,c,cc}
\cs_generate_variant:Nn \tl_if_eq:NNF {Nc,c,cc}
+\prg_new_protected_conditional:Npnn \tl_if_eq:nn #1#2 { T , F , TF } {
+ \group_begin:
+ \tl_set:Nn \l_tl_tmpa_tl {#1}
+ \tl_set:Nn \l_tl_tmpb_tl {#2}
+ \tex_ifx:D \l_tl_tmpa_tl \l_tl_tmpb_tl
+ \group_end:
+ \prg_return_false:
+ \tex_else:D
+ \group_end:
+ \prg_return_false:
+ \tex_fi:D
+}
+\tl_new:N \l_tl_tmpa_tl
+\tl_new:N \l_tl_tmpb_tl
\prg_new_conditional:Npnn \tl_if_empty:n #1 {p,TF,T,F} {
\exp_after:wN \if_meaning:w \exp_after:wN \q_nil \tl_to_str:n {#1} \q_nil
\prg_return_true: \else: \prg_return_false: \fi:
@@ -242,9 +256,9 @@
\cs_generate_variant:Nn \tl_if_empty:nT {o}
\cs_generate_variant:Nn \tl_if_empty:nF {o}
\prg_new_conditional:Npnn \tl_if_blank:n #1 {p,TF,T,F} {
- \exp_after:wN \tl_if_blank_p_aux:w \tl_to_str:n {#1} aa..\q_nil
+ \exp_after:wN \tl_if_blank_p_aux:w \tl_to_str:n {#1} aa..\q_stop
}
-\cs_new:Npn \tl_if_blank_p_aux:w #1#2 a #3#4 \q_nil {
+\cs_new:Npn \tl_if_blank_p_aux:w #1#2 a #3#4 \q_stop {
\if_meaning:w #3 #4 \prg_return_true: \else: \prg_return_false: \fi:
}
\cs_generate_variant:Nn \tl_if_blank_p:n {V}
@@ -262,7 +276,7 @@
\tl_if_blank:nTF {#1}
{\prg_return_true:}
{
- \_tl_if_single_aux:w #1 \q_nil
+ \_tl_if_single_aux:w #1 \q_stop
}
}
}
@@ -273,168 +287,13 @@
\exp_after:wN \tl_if_blank:nTF #1
{\prg_return_true:}
{
- \exp_after:wN \_tl_if_single_aux:w #1 \q_nil
+ \exp_after:wN \_tl_if_single_aux:w #1 \q_stop
}
}
}
-\cs_new:Npn \_tl_if_single_aux:w #1#2 \q_nil {
+\cs_new:Npn \_tl_if_single_aux:w #1#2 \q_stop {
\tl_if_empty:nTF {#2} \prg_return_true: \prg_return_false:
}
-\cs_new_eq:NN \tl_compare:xx \pdf_strcmp:D
-\cs_new:Npn \tl_compare:nn #1#2{
- \tl_compare:xx{\exp_not:n{#1}}{\exp_not:n{#2}}
-}
-\cs_new:Npn \tl_compare:nx #1{
- \tl_compare:xx{\exp_not:n{#1}}
-}
-\cs_new:Npn \tl_compare:xn #1#2{
- \tl_compare:xx{#1}{\exp_not:n{#2}}
-}
-\cs_new:Npn \tl_compare:nV #1#2 {
- \tl_compare:xx { \exp_not:n {#1} } { \exp_not:V #2 }
-}
-\cs_new:Npn \tl_compare:no #1#2{
- \tl_compare:xx{\exp_not:n{#1}}{\exp_not:n\exp_after:wN{#2}}
-}
-\cs_new:Npn \tl_compare:Vn #1#2 {
- \tl_compare:xx { \exp_not:V #1 } { \exp_not:n {#2} }
-}
-\cs_new:Npn \tl_compare:on #1#2{
- \tl_compare:xx{\exp_not:n\exp_after:wN{#1}}{\exp_not:n{#2}}
-}
-\cs_new:Npn \tl_compare:VV #1#2 {
- \tl_compare:xx { \exp_not:V #1 } { \exp_not:V #2 }
-}
-\cs_new:Npn \tl_compare:oo #1#2{
- \tl_compare:xx{\exp_not:n\exp_after:wN{#1}}{\exp_not:n\exp_after:wN{#2}}
-}
-\cs_new:Npn \tl_compare:xV #1#2 {
- \tl_compare:xx {#1} { \exp_not:V #2 }
-}
-\cs_new:Npn \tl_compare:xo #1#2{
- \tl_compare:xx{#1}{\exp_not:n\exp_after:wN{#2}}
-}
-\cs_new:Npn \tl_compare:Vx #1#2 {
- \tl_compare:xx { \exp_not:V #1 } {#2}
-}
-\cs_new:Npn \tl_compare:ox #1#2{
- \tl_compare:xx{\exp_not:n\exp_after:wN{#1}}{#2}
-}
-\cs_set_nopar:Npn \tl_tmp:w #1 {
- \tl_set:Nx \l_kernel_tmpa_tl {
- \exp_not:N \prg_new_conditional:Npnn \exp_not:c {tl_if_eq:#1}
- ####1 ####2 {p,TF,T,F} {
- \exp_not:N \tex_ifnum:D
- \exp_not:c {tl_compare:#1} {####1}{####2}
- \exp_not:n{ =\c_zero \prg_return_true: \else: \prg_return_false: \fi: }
- }
- }
- \l_kernel_tmpa_tl
-}
-\tl_tmp:w{xx} \tl_tmp:w{nx} \tl_tmp:w{ox} \tl_tmp:w{Vx}
-\tl_tmp:w{xn} \tl_tmp:w{nn} \tl_tmp:w{on} \tl_tmp:w{Vn}
-\tl_tmp:w{xo} \tl_tmp:w{no} \tl_tmp:w{oo}
-\tl_tmp:w{xV} \tl_tmp:w{nV} \tl_tmp:w{VV}
-\cs_if_exist:cF{pdf_strcmp:D}{
- \prg_set_protected_conditional:Npnn \tl_if_eq:nn #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {\exp_not:n{#1}}
- \tl_set:Nx \l_kernel_testb_tl {\exp_not:n{#2}}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:nV #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl { \exp_not:n {#1} }
- \tl_set:Nx \l_kernel_testb_tl { \exp_not:V #2 }
- \if_meaning:w \l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:no #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {\exp_not:n{#1}}
- \tl_set:Nx \l_kernel_testb_tl {\exp_not:o{#2}}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:nx #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {\exp_not:n{#1}}
- \tl_set:Nx \l_kernel_testb_tl {#2}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:Vn #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl { \exp_not:V #1 }
- \tl_set:Nx \l_kernel_testb_tl { \exp_not:n{#2} }
- \if_meaning:w \l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:on #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {\exp_not:o{#1}}
- \tl_set:Nx \l_kernel_testb_tl {\exp_not:n{#2}}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:VV #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl { \exp_not:V #1 }
- \tl_set:Nx \l_kernel_testb_tl { \exp_not:V #2 }
- \if_meaning:w \l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:oo #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {\exp_not:o{#1}}
- \tl_set:Nx \l_kernel_testb_tl {\exp_not:o{#2}}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:Vx #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl { \exp_not:V #1 }
- \tl_set:Nx \l_kernel_testb_tl {#2}
- \if_meaning:w \l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:ox #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {\exp_not:o{#1}}
- \tl_set:Nx \l_kernel_testb_tl {#2}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:xn #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {#1}
- \tl_set:Nx \l_kernel_testb_tl {\exp_not:n{#2}}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:xV #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {#1}
- \tl_set:Nx \l_kernel_testb_tl { \exp_not:V #2 }
- \if_meaning:w \l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:xo #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {#1}
- \tl_set:Nx \l_kernel_testb_tl {\exp_not:o{#2}}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
- \prg_set_protected_conditional:Npnn \tl_if_eq:xx #1#2 {TF,T,F} {
- \tl_set:Nx \l_kernel_testa_tl {#1}
- \tl_set:Nx \l_kernel_testb_tl {#2}
- \if_meaning:w\l_kernel_testa_tl \l_kernel_testb_tl
- \prg_return_true: \else: \prg_return_false:
- \fi:
- }
-}
\cs_new_eq:NN \tl_to_lowercase:n \tex_lowercase:D
\cs_new_eq:NN \tl_to_uppercase:n \tex_uppercase:D
\cs_new_eq:NN \tl_to_str:n \etex_detokenize:D
@@ -650,29 +509,29 @@
}
\cs_generate_variant:Nn \tl_remove_all_in:Nn {cn}
\cs_generate_variant:Nn \tl_gremove_all_in:Nn {cn}
-\cs_new:Npn \tl_head:n #1{\tl_head:w #1\q_nil}
+\cs_new:Npn \tl_head:n #1{\tl_head:w #1\q_stop}
\cs_new_eq:NN \tl_head_i:n \tl_head:n
-\cs_new:Npn \tl_tail:n #1{\tl_tail:w #1\q_nil}
+\cs_new:Npn \tl_tail:n #1{\tl_tail:w #1\q_stop}
\cs_generate_variant:Nn \tl_tail:n {f}
-\cs_new:Npn \tl_head_iii:n #1{\tl_head_iii:w #1\q_nil}
+\cs_new:Npn \tl_head_iii:n #1{\tl_head_iii:w #1\q_stop}
\cs_generate_variant:Nn \tl_head_iii:n {f}
-\cs_new_eq:NN \tl_head:w \use_i_delimit_by_q_nil:nw
+\cs_new:Npn \tl_head:w #1#2\q_stop{#1}
\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_new:Npn \tl_tail:w #1#2\q_stop{#2}
+\cs_new:Npn \tl_head_iii:w #1#2#3#4\q_stop{#1#2#3}
\cs_generate_variant:Nn \tl_head:n { V }
\cs_generate_variant:Nn \tl_tail:n { V }
\prg_new_conditional:Npnn \tl_if_head_eq_meaning:nN #1#2 {p,TF,T,F} {
- \exp_after:wN \if_meaning:w \tl_head:w #1 \q_nil #2
+ \exp_after:wN \if_meaning:w \tl_head:w #1 \q_stop #2
\prg_return_true: \else: \prg_return_false: \fi:
}
\prg_new_conditional:Npnn \tl_if_head_eq_charcode:nN #1#2 {p,TF,T,F} {
\exp_after:wN \if:w \exp_after:wN \exp_not:N
- \tl_head:w #1 \q_nil \exp_not:N #2
+ \tl_head:w #1 \q_stop \exp_not:N #2
\prg_return_true: \else: \prg_return_false: \fi:
}
%% \cs_new:Npn \tl_if_head_eq_charcode_p:fN #1#2{
-%% \exp_after:wN\if_charcode:w \tl_head:w #1\q_nil\exp_not:N#2
+%% \exp_after:wN\if_charcode:w \tl_head:w #1\q_stop\exp_not:N#2
%% \c_true_bool
%% \else:
%% \c_false_bool
@@ -686,7 +545,7 @@
\cs_generate_variant:Nn \tl_if_head_eq_charcode:nNF {f}
\prg_new_conditional:Npnn \tl_if_head_eq_catcode:nN #1#2 {p,TF,T,F} {
\exp_after:wN \if_catcode:w \exp_after:wN \exp_not:N
- \tl_head:w #1 \q_nil \exp_not:N #2
+ \tl_head:w #1 \q_stop \exp_not:N #2
\prg_return_true: \else: \prg_return_false: \fi:
}
\tex_ifodd:D \@l@expl@check@declarations@bool \scan_stop:
diff --git a/Master/texmf-dist/tex/latex/expl3/l3token.sty b/Master/texmf-dist/tex/latex/expl3/l3token.sty
index 4feba030a6b..873775f95d0 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3token.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3token.sty
@@ -48,7 +48,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3token.dtx 1890 2010-04-11 03:37:15Z will $
+\GetIdInfo$Id: l3token.dtx 2029 2010-09-19 13:59:02Z joseph $
{L3 Experimental token investigation and manipulation}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -222,9 +222,9 @@
\prg_return_true: \else: \prg_return_false: \fi:
}
\prg_new_conditional:Nnn \token_if_macro:N {p,TF,T,F} {
- \exp_after:wN \token_if_macro_p_aux:w \token_to_meaning:N #1 -> \q_nil
+ \exp_after:wN \token_if_macro_p_aux:w \token_to_meaning:N #1 -> \q_stop
}
-\cs_new_nopar:Npn \token_if_macro_p_aux:w #1 -> #2 \q_nil{
+\cs_new_nopar:Npn \token_if_macro_p_aux:w #1 -> #2 \q_stop{
\if_predicate:w \tl_if_empty_p:n{#2}
\prg_return_false: \else: \prg_return_true: \fi:
}
@@ -252,16 +252,16 @@
\group_end:
\prg_new_conditional:Nnn \token_if_chardef:N {p,TF,T,F} {
\exp_after:wN \token_if_chardef_aux:w
- \token_to_meaning:N #1?CHAR"\q_nil
+ \token_to_meaning:N #1?CHAR"\q_stop
}
-\cs_new_nopar:Npn \token_if_chardef_aux:w #1?CHAR"#2\q_nil{
+\cs_new_nopar:Npn \token_if_chardef_aux:w #1?CHAR"#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
\prg_new_conditional:Nnn \token_if_mathchardef:N {p,TF,T,F} {
\exp_after:wN \token_if_mathchardef_aux:w
- \token_to_meaning:N #1?MAYHCHAR"\q_nil
+ \token_to_meaning:N #1?MAYHCHAR"\q_stop
}
-\cs_new_nopar:Npn \token_if_mathchardef_aux:w #1?MAYHCHAR"#2\q_nil{
+\cs_new_nopar:Npn \token_if_mathchardef_aux:w #1?MAYHCHAR"#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
\prg_new_conditional:Nnn \token_if_int_register:N {p,TF,T,F} {
@@ -269,10 +269,10 @@
\prg_return_false:
\else:
\exp_after:wN \token_if_int_register_aux:w
- \token_to_meaning:N #1?COUXY\q_nil
+ \token_to_meaning:N #1?COUXY\q_stop
\fi:
}
-\cs_new_nopar:Npn \token_if_int_register_aux:w #1?COUXY#2\q_nil{
+\cs_new_nopar:Npn \token_if_int_register_aux:w #1?COUXY#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
\prg_new_conditional:Nnn \token_if_skip_register:N {p,TF,T,F} {
@@ -280,10 +280,10 @@
\prg_return_false:
\else:
\exp_after:wN \token_if_skip_register_aux:w
- \token_to_meaning:N #1?SKIP\q_nil
+ \token_to_meaning:N #1?SKIP\q_stop
\fi:
}
-\cs_new_nopar:Npn \token_if_skip_register_aux:w #1?SKIP#2\q_nil{
+\cs_new_nopar:Npn \token_if_skip_register_aux:w #1?SKIP#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
\prg_new_conditional:Nnn \token_if_dim_register:N {p,TF,T,F} {
@@ -291,10 +291,10 @@
\c_false_bool
\else:
\exp_after:wN \token_if_dim_register_aux:w
- \token_to_meaning:N #1?ZIMEX\q_nil
+ \token_to_meaning:N #1?ZIMEX\q_stop
\fi:
}
-\cs_new_nopar:Npn \token_if_dim_register_aux:w #1?ZIMEX#2\q_nil{
+\cs_new_nopar:Npn \token_if_dim_register_aux:w #1?ZIMEX#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
\prg_new_conditional:Nnn \token_if_toks_register:N {p,TF,T,F} {
@@ -302,32 +302,32 @@
\prg_return_false:
\else:
\exp_after:wN \token_if_toks_register_aux:w
- \token_to_meaning:N #1?YOKS\q_nil
+ \token_to_meaning:N #1?YOKS\q_stop
\fi:
}
-\cs_new_nopar:Npn \token_if_toks_register_aux:w #1?YOKS#2\q_nil{
+\cs_new_nopar:Npn \token_if_toks_register_aux:w #1?YOKS#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
\prg_new_conditional:Nnn \token_if_protected_macro:N {p,TF,T,F} {
\exp_after:wN \token_if_protected_macro_aux:w
- \token_to_meaning:N #1?PROYECYEZ~MACRO\q_nil
+ \token_to_meaning:N #1?PROYECYEZ~MACRO\q_stop
}
-\cs_new_nopar:Npn \token_if_protected_macro_aux:w #1?PROYECYEZ~MACRO#2\q_nil{
+\cs_new_nopar:Npn \token_if_protected_macro_aux:w #1?PROYECYEZ~MACRO#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
\prg_new_conditional:Nnn \token_if_long_macro:N {p,TF,T,F} {
\exp_after:wN \token_if_long_macro_aux:w
- \token_to_meaning:N #1?LOXG~MACRO\q_nil
+ \token_to_meaning:N #1?LOXG~MACRO\q_stop
}
-\cs_new_nopar:Npn \token_if_long_macro_aux:w #1?LOXG~MACRO#2\q_nil{
+\cs_new_nopar:Npn \token_if_long_macro_aux:w #1?LOXG~MACRO#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
\prg_new_conditional:Nnn \token_if_protected_long_macro:N {p,TF,T,F} {
\exp_after:wN \token_if_protected_long_macro_aux:w
- \token_to_meaning:N #1?PROYECYEZ?LOXG~MACRO\q_nil
+ \token_to_meaning:N #1?PROYECYEZ?LOXG~MACRO\q_stop
}
\cs_new_nopar:Npn \token_if_protected_long_macro_aux:w #1
- ?PROYECYEZ?LOXG~MACRO#2\q_nil{
+ ?PROYECYEZ?LOXG~MACRO#2\q_stop{
\tl_if_empty:nTF {#1} {\prg_return_true:} {\prg_return_false:}
}
}
@@ -340,25 +340,25 @@
\char_set_catcode:nn{`\O}{12}
\tl_to_lowercase:n{
\group_end:
- \cs_new_nopar:Npn \token_get_prefix_arg_replacement_aux:w #1MACRO?#2->#3\q_nil#4{
+ \cs_new_nopar:Npn \token_get_prefix_arg_replacement_aux:w #1MACRO?#2->#3\q_stop#4{
#4{#1}{#2}{#3}
}
\cs_new_nopar:Npn\token_get_prefix_spec:N #1{
\token_if_macro:NTF #1{
\exp_after:wN \token_get_prefix_arg_replacement_aux:w
- \token_to_meaning:N #1\q_nil\use_i:nnn
+ \token_to_meaning:N #1\q_stop\use_i:nnn
}{\scan_stop:}
}
\cs_new_nopar:Npn\token_get_arg_spec:N #1{
\token_if_macro:NTF #1{
\exp_after:wN \token_get_prefix_arg_replacement_aux:w
- \token_to_meaning:N #1\q_nil\use_ii:nnn
+ \token_to_meaning:N #1\q_stop\use_ii:nnn
}{\scan_stop:}
}
\cs_new_nopar:Npn\token_get_replacement_spec:N #1{
\token_if_macro:NTF #1{
\exp_after:wN \token_get_prefix_arg_replacement_aux:w
- \token_to_meaning:N #1\q_nil\use_iii:nnn
+ \token_to_meaning:N #1\q_stop\use_iii:nnn
}{\scan_stop:}
}
}
diff --git a/Master/texmf-dist/tex/latex/expl3/l3toks.sty b/Master/texmf-dist/tex/latex/expl3/l3toks.sty
index ce2a909f3db..23c8f1fd9dd 100644
--- a/Master/texmf-dist/tex/latex/expl3/l3toks.sty
+++ b/Master/texmf-dist/tex/latex/expl3/l3toks.sty
@@ -48,7 +48,7 @@
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
-\GetIdInfo$Id: l3toks.dtx 1933 2010-05-25 00:26:38Z will $
+\GetIdInfo$Id: l3toks.dtx 2037 2010-09-20 21:22:45Z joseph $
{L3 Experimental Token Registers}
\ProvidesExplPackage
{\filename}{\filedate}{\fileversion}{\filedescription}
@@ -99,7 +99,7 @@
\cs_new_eq:NN \toks_show:N \kernel_register_show:N
\cs_generate_variant:Nn \toks_show:N {c}
\cs_new_protected_nopar:Npn \toks_put_left:Nn #1 {
- \exp_after:wN \toks_put_left_aux:w \exp_after:wN \q_mark
+ \exp_after:wN \toks_put_left_aux:w \exp_after:wN \q_nil
\toks_use:N #1 \q_stop #1
}
\cs_generate_variant:Nn \toks_put_left:Nn {NV,No,Nx,cn,co,cV}
@@ -144,7 +144,7 @@
\cs_generate_variant:Nn \toks_if_empty:NT {c}
\cs_generate_variant:Nn \toks_if_empty:NF {c}
\prg_new_conditional:Nnn \toks_if_eq:NN {p,TF,T,F} {
- \tl_if_eq:xxTF {\toks_use:N #1} {\toks_use:N #2}
+ \str_if_eq:xxTF {\toks_use:N #1} {\toks_use:N #2}
{\prg_return_true:} {\prg_return_false:}
}
\cs_generate_variant:Nn \toks_if_eq_p:NN {Nc,c,cc}