summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-06-17 22:32:09 +0000
committerKarl Berry <karl@freefriends.org>2014-06-17 22:32:09 +0000
commit3c2f50b92407533aabaef1823006032eedd6ef90 (patch)
treeeb67245dd952c951b95c485a5eb66f9539ac83df /Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
parent4aa0b8110f2fdb3044d8b26d54e12cbb49a9a3dc (diff)
l3
git-svn-id: svn://tug.org/texlive/trunk@34268 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex830
1 files changed, 281 insertions, 549 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index 5940982692f..43ce6fd8e94 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -33,11 +33,9 @@
%% l3fp-trig.dtx (with options: `package')
%% l3fp-convert.dtx (with options: `package')
%% l3fp-assign.dtx (with options: `package')
-%% l3fp-old.dtx (with options: `package')
%% l3box.dtx (with options: `package')
%% l3coffins.dtx (with options: `package')
%% l3color.dtx (with options: `package')
-%% l3luatex.dtx (with options: `package')
%% l3candidates.dtx (with options: `package')
%%
%% EXPERIMENTAL CODE
@@ -81,8 +79,8 @@
%% -----------------------------------------------------------------------
\def\ExplFileName{expl3}
\def\ExplFileDescription{L3 programming layer}
-\def\ExplFileDate{2014/05/20}
-\def\ExplFileVersion{4814}
+\def\ExplFileDate{2014/06/10}
+\def\ExplFileVersion{5105}
\begingroup
\def\next{\endgroup}
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -241,7 +239,7 @@
}
}
\endgroup
-\GetIdInfo$Id: l3bootstrap.dtx 4782 2014-05-16 22:12:19Z joseph $
+\GetIdInfo$Id: l3bootstrap.dtx 4889 2014-05-26 19:59:25Z joseph $
{L3 Bootstrap code}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname pdfstrcmp\endcsname\relax
@@ -281,17 +279,6 @@
\expandafter\luatex_directlua:D\expandafter{\tempa}%
}
\fi
- \long\gdef\expl_pdfstrcmp#1#2%
- {%
- \luatex_directlua:D
- {%
- l3kernel.strcmp
- (
- "\luatex_luaescapestring:D {#1}" ,
- "\luatex_luaescapestring:D {#2}"
- )
- }%
- }
\fi
\fi
\endgroup
@@ -310,26 +297,28 @@
\LineBreak
}%
\expandafter\ifx\csname pdfstrcmp\endcsname\relax
- \catcode`\_=11 %
- \expandafter\ifx\csname expl_pdfstrcmp\endcsname\relax
- \def\LineBreak{\noexpand\MessageBreak}%
- \expandafter\ifx\csname PackageError\endcsname\relax
- \def\LineBreak{^^J}%
- \begingroup
- \def\PackageError#1#2#3%
- {%
- \endgroup
- \errhelp{#3}%
- \errmessage{#1 Error: #2!}
- }%
+ \expandafter\ifx\csname directlua\endcsname\relax
+ \else
+ \ifnum\luatexversion<36 %
+ \def\LineBreak{\noexpand\MessageBreak}%
+ \expandafter\ifx\csname PackageError\endcsname\relax
+ \def\LineBreak{^^J}%
+ \begingroup
+ \def\PackageError#1#2#3%
+ {%
+ \endgroup
+ \errhelp{#3}%
+ \errmessage{#1 Error: #2!}
+ }%
+ \fi
+ \edef\next
+ {%
+ \noexpand\PackageError{expl3}{\ShortText}
+ {\LongText Loading of expl3 will abort!}%
+ \endgroup
+ \noexpand\endinput
+ }%
\fi
- \edef\next
- {%
- \noexpand\PackageError{expl3}{\ShortText}
- {\LongText Loading of expl3 will abort!}%
- \endgroup
- \noexpand\endinput
- }%
\fi
\fi
\next
@@ -345,16 +334,6 @@
\fi
\expandafter\endgroup
\next
-\ifdefined\directlua
- \ifdefined\newattribute
- \else
- \ifdefined\RequirePackage
- \RequirePackage{luatex}
- \else
- \input luatex.sty %
- \fi
- \fi
-\fi
\protected\def\ExplSyntaxOff{}
\protected\edef\ExplSyntaxOff
{%
@@ -446,7 +425,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3names.dtx 4728 2014-05-04 13:25:37Z joseph $
+\GetIdInfo$Id: l3names.dtx 4993 2014-06-02 09:39:35Z joseph $
{L3 Namespace for primitives}
\let \tex_global:D \global
\let \tex_let:D \let
@@ -869,6 +848,7 @@
\__kernel_primitive:NN \XeTeXversion \xetex_XeTeXversion:D
\__kernel_primitive:NN \catcodetable \luatex_catcodetable:D
\__kernel_primitive:NN \directlua \luatex_directlua:D
+ \__kernel_primitive:NN \expanded \luatex_expanded:D
\__kernel_primitive:NN \initcatcodetable \luatex_initcatcodetable:D
\__kernel_primitive:NN \latelua \luatex_latelua:D
\__kernel_primitive:NN \luaescapestring \luatex_luaescapestring:D
@@ -881,11 +861,6 @@
\__kernel_primitive:NN \pardir \luatex_pardir:D
\__kernel_primitive:NN \textdir \luatex_textdir:D
\tex_endgroup:D
-\etex_ifdefined:D \pdftex_strcmp:D
-\tex_else:D
- \tex_let:D \pdftex_strcmp:D \expl_pdfstrcmp
- \tex_let:D \expl_pdfstrcmp \tex_undefined:D
-\tex_fi:D
\etex_ifdefined:D \@@end
\tex_let:D \tex_end:D \@@end
\tex_let:D \tex_everydisplay:D \frozen@everydisplay
@@ -963,7 +938,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3basics.dtx 4728 2014-05-04 13:25:37Z joseph $
+\GetIdInfo$Id: l3basics.dtx 5033 2014-06-04 05:32:44Z joseph $
{L3 Basic definitions}
\tex_let:D \if_true: \tex_iftrue:D
\tex_let:D \if_false: \tex_iffalse:D
@@ -1714,20 +1689,42 @@
\cs_gset_eq:NN \pdftex_if_engine_p: \c_false_bool
}
\cs_new_nopar:Npn \prg_do_nothing: { }
+\cs_new:Npn \__str_if_eq_x:nn #1#2 { \pdftex_strcmp:D {#1} {#2} }
+\luatex_if_engine:T
+ {
+ \cs_set:Npn \__str_if_eq_x:nn #1#2
+ {
+ \luatex_directlua:D
+ {
+ l3kernel.strcmp
+ (
+ " \__str_escape_x:n {#1} " ,
+ " \__str_escape_x:n {#2} "
+ )
+ }
+ }
+ \cs_new:Npn \__str_escape_x:n #1
+ {
+ \luatex_luaescapestring:D
+ {
+ \etex_detokenize:D \exp_after:wN { \luatex_expanded:D {#1} }
+ }
+ }
+ }
\prg_new_conditional:Npnn \str_if_eq:nn #1#2 { p , T , F , TF }
{
- \if_int_compare:w \pdftex_strcmp:D { \exp_not:n {#1} } { \exp_not:n {#2} }
+ \if_int_compare:w \__str_if_eq_x:nn { \exp_not:n {#1} } { \exp_not:n {#2} }
= \c_zero
\prg_return_true: \else: \prg_return_false: \fi:
}
\prg_new_conditional:Npnn \str_if_eq_x:nn #1#2 { p , T , F , TF }
{
- \if_int_compare:w \pdftex_strcmp:D {#1} {#2} = \c_zero
+ \if_int_compare:w \__str_if_eq_x:nn {#1} {#2} = \c_zero
\prg_return_true: \else: \prg_return_false: \fi:
}
\cs_new:Npn \__str_if_eq_x_return:nn #1 #2
{
- \if_int_compare:w \pdftex_strcmp:D {#1} {#2} = \c_zero
+ \if_int_compare:w \__str_if_eq_x:nn {#1} {#2} = \c_zero
\prg_return_true:
\else:
\prg_return_false:
@@ -2327,7 +2324,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3tl.dtx 4728 2014-05-04 13:25:37Z joseph $
+\GetIdInfo$Id: l3tl.dtx 5070 2014-06-06 18:00:24Z bruno $
{L3 Token lists}
\cs_new_protected:Npn \tl_new:N #1
{
@@ -2500,16 +2497,7 @@
\tl_gset:Nx #1 { \exp_not:o {#2} \exp_not:o {#3} }
}
\tex_fi:D
-\group_begin:
- \tex_lccode:D `\A = `\@ \scan_stop:
- \tex_lccode:D `\B = `\@ \scan_stop:
- \tex_catcode:D `\A = 8 \scan_stop:
- \tex_catcode:D `\B = 3 \scan_stop:
-\tex_lowercase:D
- {
- \group_end:
- \tl_const:Nn \c__tl_rescan_marker_tl { A B }
- }
+\tl_const:Nx \c__tl_rescan_marker_tl { : \token_to_str:N : }
\cs_new_protected_nopar:Npn \tl_set_rescan:Nnn
{ \__tl_set_rescan:NNnn \tl_set:Nn }
\cs_new_protected_nopar:Npn \tl_gset_rescan:Nnn
@@ -2702,7 +2690,15 @@
\cs_new:Npn \tl_if_single:NF { \exp_args:No \tl_if_single:nF }
\cs_new:Npn \tl_if_single:NTF { \exp_args:No \tl_if_single:nTF }
\prg_new_conditional:Npnn \tl_if_single:n #1 { p , T , F , TF }
- { \__str_if_eq_x_return:nn { \exp_not:o { \use_none:nn #1 ?? } } {?} }
+ {
+ \if_catcode:w ^ \exp_after:wN \__tl_if_single:nnw
+ \tl_to_str:n \exp_after:wN { \use_none:nn #1 ?? } ^ ? \q_stop
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+\cs_new:Npn \__tl_if_single:nnw #1#2#3 \q_stop {#2}
\cs_new:Npn \tl_case:Nn #1#2
{
\tex_romannumeral:D
@@ -3625,7 +3621,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3int.dtx 4776 2014-05-16 14:46:44Z joseph $
+\GetIdInfo$Id: l3int.dtx 4966 2014-05-31 00:44:34Z bruno $
{L3 Integers}
\cs_new_eq:NN \__int_value:w \tex_number:D
\cs_new_eq:NN \__int_eval:w \etex_numexpr:D
@@ -3816,7 +3812,12 @@
\cs_new:Npn \__int_compare:NNw #1#2#3 \q_mark
{
\etex_unexpanded:D
- \use:c { __int_compare_ #1 \if_meaning:w = #2 = \fi: :NNw }
+ \use:c
+ {
+ __int_compare_ \token_to_str:N #1
+ \if_meaning:w = #2 = \fi:
+ :NNw
+ }
\__prg_compare_error:Nw #1
}
\cs_new:cpn { __int_compare_end_=:NNw } #1#2#3 e #4 \q_stop
@@ -3954,19 +3955,26 @@
\int_compare:nNnF {#1} #2 {#3}
{ \int_do_until:nNnn {#1} #2 {#3} {#4} }
}
-\cs_new:Npn \int_step_function:nnnN #1#2#3#4
+\cs_new:Npn \int_step_function:nnnN #1#2#3
+ {
+ \exp_after:wN \__int_step:wwwN
+ \int_use:N \__int_eval:w #1 \exp_after:wN ;
+ \int_use:N \__int_eval:w #2 \exp_after:wN ;
+ \int_use:N \__int_eval:w #3 ;
+ }
+\cs_new:Npn \__int_step:wwwN #1; #2; #3; #4
{
\int_compare:nNnTF {#2} > \c_zero
- { \exp_args:NNf \__int_step:NnnnN > }
+ { \__int_step:NnnnN > }
{
\int_compare:nNnTF {#2} = \c_zero
{
\__msg_kernel_expandable_error:nnn { kernel } { zero-step } {#4}
\use_none:nnnn
}
- { \exp_args:NNf \__int_step:NnnnN < }
+ { \__int_step:NnnnN < }
}
- { \int_eval:n {#1} } {#2} {#3} #4
+ {#1} {#2} {#3} #4
}
\cs_new:Npn \__int_step:NnnnN #1#2#3#4#5
{
@@ -4470,7 +4478,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3quark.dtx 4728 2014-05-04 13:25:37Z joseph $
+\GetIdInfo$Id: l3quark.dtx 4889 2014-05-26 19:59:25Z joseph $
{L3 Quarks}
\cs_new_protected:Npn \quark_new:N #1 { \tl_const:Nn #1 {#1} }
\quark_new:N \q_nil
@@ -4495,14 +4503,14 @@
}
\cs_new:Npn \quark_if_recursion_tail_stop:n #1
{
- \if_int_compare:w \pdftex_strcmp:D
+ \if_int_compare:w \__str_if_eq_x:nn
{ \exp_not:N \q_recursion_tail } { \exp_not:n {#1} } = \c_zero
\exp_after:wN \use_none_delimit_by_q_recursion_stop:w
\fi:
}
\cs_new:Npn \quark_if_recursion_tail_stop_do:nn #1
{
- \if_int_compare:w \pdftex_strcmp:D
+ \if_int_compare:w \__str_if_eq_x:nn
{ \exp_not:N \q_recursion_tail } { \exp_not:n {#1} } = \c_zero
\exp_after:wN \use_i_delimit_by_q_recursion_stop:nw
\else:
@@ -4519,7 +4527,7 @@
}
\cs_new:Npn \__quark_if_recursion_tail_break:nN #1#2
{
- \if_int_compare:w \pdftex_strcmp:D
+ \if_int_compare:w \__str_if_eq_x:nn
{ \exp_not:N \q_recursion_tail } { \exp_not:n {#1} } = \c_zero
\exp_after:wN #2
\fi:
@@ -4546,7 +4554,7 @@
\cs_generate_variant:Nn \quark_if_no_value:NTF { c }
\prg_new_conditional:Nnn \quark_if_nil:n { p, T , F , TF }
{
- \if_int_compare:w \pdftex_strcmp:D
+ \if_int_compare:w \__str_if_eq_x:nn
{ \exp_not:N \q_nil } { \exp_not:n {#1} } = \c_zero
\prg_return_true:
\else:
@@ -4555,7 +4563,7 @@
}
\prg_new_conditional:Nnn \quark_if_no_value:n { p, T , F , TF }
{
- \if_int_compare:w \pdftex_strcmp:D
+ \if_int_compare:w \__str_if_eq_x:nn
{ \exp_not:N \q_no_value } { \exp_not:n {#1} } = \c_zero
\prg_return_true:
\else:
@@ -5417,7 +5425,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3token.dtx 4728 2014-05-04 13:25:37Z joseph $
+\GetIdInfo$Id: l3token.dtx 4889 2014-05-26 19:59:25Z joseph $
{L3 Experimental token manipulation}
\cs_new_protected:Npn \char_set_catcode:nn #1#2
{ \tex_catcode:D #1 = \__int_eval:w #2 \__int_eval_end: }
@@ -5642,7 +5650,7 @@
}
\cs_new:Npn \__token_if_macro_p:w #1 MA #2 ; #3 \q_stop
{
- \if_int_compare:w \pdftex_strcmp:D { #2 } { cro } = \c_zero
+ \if_int_compare:w \__str_if_eq_x:nn { #2 } { cro } = \c_zero
\prg_return_true:
\else:
\prg_return_false:
@@ -6408,7 +6416,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3msg.dtx 4728 2014-05-04 13:25:37Z joseph $
+\GetIdInfo$Id: l3msg.dtx 4943 2014-05-30 17:26:32Z bruno $
{L3 Messages}
\tl_new:N \l__msg_internal_tl
\tl_const:Nn \c__msg_text_prefix_tl { msg~text~>~ }
@@ -6462,33 +6470,33 @@
}
\cs_new_protected:Npn \msg_gset:nnn #1#2#3
{ \msg_gset:nnnn {#1} {#2} {#3} { } }
-\tl_const:Nn \c_msg_coding_error_text_tl
+\tl_const:Nn \c__msg_coding_error_text_tl
{
This~is~a~coding~error.
\\ \\
}
-\tl_const:Nn \c_msg_continue_text_tl
+\tl_const:Nn \c__msg_continue_text_tl
{ Type~<return>~to~continue }
-\tl_const:Nn \c_msg_critical_text_tl
- { Reading~the~current~file~will~stop. }
-\tl_const:Nn \c_msg_fatal_text_tl
+\tl_const:Nn \c__msg_critical_text_tl
+ { Reading~the~current~file~'\g_file_current_name_tl'~will~stop. }
+\tl_const:Nn \c__msg_fatal_text_tl
{ This~is~a~fatal~error:~LaTeX~will~abort. }
-\tl_const:Nn \c_msg_help_text_tl
+\tl_const:Nn \c__msg_help_text_tl
{ For~immediate~help~type~H~<return> }
-\tl_const:Nn \c_msg_no_info_text_tl
+\tl_const:Nn \c__msg_no_info_text_tl
{
LaTeX~does~not~know~anything~more~about~this~error,~sorry.
- \c_msg_return_text_tl
+ \c__msg_return_text_tl
}
-\tl_const:Nn \c_msg_on_line_text_tl { on~line }
-\tl_const:Nn \c_msg_return_text_tl
+\tl_const:Nn \c__msg_on_line_text_tl { on~line }
+\tl_const:Nn \c__msg_return_text_tl
{
\\ \\
Try~typing~<return>~to~proceed.
\\
If~that~doesn't~work,~type~X~<return>~to~quit.
}
-\tl_const:Nn \c_msg_trouble_text_tl
+\tl_const:Nn \c__msg_trouble_text_tl
{
\\ \\
More~errors~will~almost~certainly~follow: \\
@@ -6497,7 +6505,7 @@
\cs_new_nopar:Npn \msg_line_number: { \int_use:N \tex_inputlineno:D }
\cs_gset_nopar:Npn \msg_line_context:
{
- \c_msg_on_line_text_tl
+ \c__msg_on_line_text_tl
\c_space_tl
\msg_line_number:
}
@@ -6505,12 +6513,12 @@
{
\tl_if_empty:nTF {#3}
{
- \__msg_interrupt_wrap:nn { \\ \c_msg_no_info_text_tl }
- {#1 \\\\ #2 \\\\ \c_msg_continue_text_tl }
+ \__msg_interrupt_wrap:nn { \\ \c__msg_no_info_text_tl }
+ {#1 \\\\ #2 \\\\ \c__msg_continue_text_tl }
}
{
\__msg_interrupt_wrap:nn { \\ #3 }
- {#1 \\\\ #2 \\\\ \c_msg_help_text_tl }
+ {#1 \\\\ #2 \\\\ \c__msg_help_text_tl }
}
}
\cs_new_protected:Npn \__msg_interrupt_wrap:nn #1#2
@@ -6628,7 +6636,7 @@
\use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6}
\msg_see_documentation_text:n {#1}
}
- { \c_msg_fatal_text_tl }
+ { \c__msg_fatal_text_tl }
\tex_end:D
}
\__msg_class_new:nn { critical }
@@ -6639,7 +6647,7 @@
\use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6}
\msg_see_documentation_text:n {#1}
}
- { \c_msg_critical_text_tl }
+ { \c__msg_critical_text_tl }
\tex_endinput:D
}
\__msg_class_new:nn { error }
@@ -6875,25 +6883,25 @@
\__msg_kernel_new:nnnn { kernel } { message-already-defined }
{ Message~'#2'~for~module~'#1'~already~defined. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~was~asked~to~define~a~new~message~called~'#2'\
by~the~module~'#1':~this~message~already~exists.
- \c_msg_return_text_tl
+ \c__msg_return_text_tl
}
\__msg_kernel_new:nnnn { kernel } { message-unknown }
{ Unknown~message~'#2'~for~module~'#1'. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~was~asked~to~display~a~message~called~'#2'\\
by~the~module~'#1':~this~message~does~not~exist.
- \c_msg_return_text_tl
+ \c__msg_return_text_tl
}
\__msg_kernel_new:nnnn { kernel } { message-class-unknown }
{ Unknown~message~class~'#1'. }
{
LaTeX~has~been~asked~to~redirect~messages~to~a~class~'#1':\\
this~was~never~defined.
- \c_msg_return_text_tl
+ \c__msg_return_text_tl
}
\__msg_kernel_new:nnnn { kernel } { message-redirect-loop }
{
@@ -6909,7 +6917,7 @@
\__msg_kernel_new:nnnn { kernel } { bad-number-of-arguments }
{ Function~'#1'~cannot~be~defined~with~#2~arguments. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~has~been~asked~to~define~a~function~'#1'~with~
#2~arguments.~
TeX~allows~between~0~and~9~arguments~for~a~single~function.
@@ -6917,7 +6925,7 @@
\__msg_kernel_new:nnnn { kernel } { command-already-defined }
{ Control~sequence~#1~already~defined. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~has~been~asked~to~create~a~new~control~sequence~'#1'~
but~this~name~has~already~been~used~elsewhere. \\ \\
The~current~meaning~is:\\
@@ -6926,14 +6934,14 @@
\__msg_kernel_new:nnnn { kernel } { command-not-defined }
{ Control~sequence~#1~undefined. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~has~been~asked~to~use~a~command~#1,~but~this~has~not~
been~defined~yet.
}
\__msg_kernel_new:nnnn { kernel } { empty-search-pattern }
{ Empty~search~pattern. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~has~been~asked~to~replace~an~empty~pattern~by~'#1':~that~
would~lead~to~an~infinite~loop!
}
@@ -6947,7 +6955,7 @@
\__msg_kernel_new:nnnn { kernel } { missing-colon }
{ Function~'#1'~contains~no~':'. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
Code-level~functions~must~contain~':'~to~separate~the~
argument~specification~from~the~function~name.~This~is~
needed~when~defining~conditionals~or~variants,~or~when~building~a~
@@ -6956,14 +6964,14 @@
\__msg_kernel_new:nnnn { kernel } { protected-predicate }
{ Predicate~'#1'~must~be~expandable. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~has~been~asked~to~define~'#1'~as~a~protected~predicate.~
Only~expandable~tests~can~have~a~predicate~version.
}
\__msg_kernel_new:nnnn { kernel } { conditional-form-unknown }
{ Conditional~form~'#1'~for~function~'#2'~unknown. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~has~been~asked~to~define~the~conditional~form~'#1'~of~
the~function~'#2',~but~only~'TF',~'T',~'F',~and~'p'~forms~exist.
}
@@ -6983,21 +6991,21 @@
\__msg_kernel_new:nnnn { kernel } { scanmark-already-defined }
{ Scan~mark~#1~already~defined. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~has~been~asked~to~create~a~new~scan~mark~'#1'~
but~this~name~has~already~been~used~for~a~scan~mark.
}
\__msg_kernel_new:nnnn { kernel } { variable-not-defined }
{ Variable~#1~undefined. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~has~been~asked~to~show~a~variable~#1,~but~this~has~not~
been~defined~yet.
}
\__msg_kernel_new:nnnn { kernel } { variant-too-long }
{ Variant~form~'#1'~longer~than~base~signature~of~'#2'. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~has~been~asked~to~create~a~variant~of~the~function~'#2'~
with~a~signature~starting~with~'#1',~but~that~is~longer~than~
the~signature~(part~after~the~colon)~of~'#2'.
@@ -7005,7 +7013,7 @@
\__msg_kernel_new:nnnn { kernel } { invalid-variant }
{ Variant~form~'#1'~invalid~for~base~form~'#2'. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~has~been~asked~to~create~a~variant~of~the~function~'#2'~
with~a~signature~starting~with~'#1',~but~cannot~change~an~argument~
from~type~'#3'~to~type~'#4'.
@@ -7019,7 +7027,7 @@
\__msg_kernel_new:nnn { kernel } { negative-replication }
{ Negative~argument~for~\prg_replicate:nn. }
\__msg_kernel_new:nnn { kernel } { unknown-comparison }
- { Relation~symbol~'#1'~unknown:~use~=,~<,~>,~==,~!=,~<=,~>=. }
+ { Relation~'#1'~unknown:~use~=,~<,~>,~==,~!=,~<=,~>=. }
\__msg_kernel_new:nnn { kernel } { zero-step }
{ Zero~step~size~for~step~function~#1. }
\__msg_kernel_new:nnn { kernel } { show-clist }
@@ -7182,7 +7190,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3file.dtx 4737 2014-05-05 07:37:48Z joseph $
+\GetIdInfo$Id: l3file.dtx 4890 2014-05-26 20:59:31Z joseph $
{L3 File and I/O operations}
\tl_new:N \g_file_current_name_tl
\tl_gset_eq:NN \g_file_current_name_tl \@currname
@@ -7201,11 +7209,27 @@
\tl_set:Nx \l__file_internal_name_tl {#1}
\tl_set:Nx \l__file_internal_name_tl
{ \tl_to_str:N \l__file_internal_name_tl }
- \tl_if_in:NnT \l__file_internal_name_tl { ~ }
+ \int_compare:nNnTF
+ {
+ \int_mod:nn
+ {
+ 0 \tl_map_function:NN \l__file_internal_name_tl
+ \__file_name_sanitize_aux:n
+ }
+ \c_two
+ }
+ = \c_zero
{
- \__msg_kernel_error:nnx { kernel } { space-in-file-name }
+ \tl_remove_all:Nn \l__file_internal_name_tl { " }
+ \tl_if_in:NnT \l__file_internal_name_tl { ~ }
+ {
+ \tl_set:Nx \l__file_internal_name_tl
+ { " \exp_not:V \l__file_internal_name_tl " }
+ }
+ }
+ {
+ \__msg_kernel_error:nnx { kernel } { unbalanced-quote-in-filename }
{ \l__file_internal_name_tl }
- \tl_remove_all:Nn \l__file_internal_name_tl { ~ }
}
\use:x
{
@@ -7213,6 +7237,11 @@
\exp_not:n {#2} { \l__file_internal_name_tl }
}
}
+\cs_new:Npn \__file_name_sanitize_aux:n #1
+ {
+ \str_if_eq:nnT {#1} { " }
+ { + \c_one }
+ }
\cs_new_protected:Npn \file_add_path:nN #1
{ \__file_name_sanitize:nn {#1} { \__file_add_path:nN } }
\cs_new_protected:Npn \__file_add_path:nN #1#2
@@ -7676,11 +7705,10 @@
All~16~are~currently~in~use,~and~something~wanted~to~open~
another~one.
}
-\__msg_kernel_new:nnnn { kernel } { space-in-file-name }
- { Space~in~file~name~'#1'. }
+\__msg_kernel_new:nnnn { kernel } { unbalanced-quote-in-filename }
+ { Unbalanced~quotes~in~file~name~'#1'. }
{
- Spaces~are~not~permitted~in~files~loaded~by~LaTeX: \\
- Further~errors~may~follow!
+ File~names~must~contain~balanced~numbers~of~quotes~(").
}
%% File: l3skip.dtx Copyright (C) 2004-2011 Frank Mittelbach, The LaTeX3 Project
%% (C) 2012-2014 The LaTeX3 Project
@@ -7715,7 +7743,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3skip.dtx 4738 2014-05-05 08:00:05Z joseph $
+\GetIdInfo$Id: l3skip.dtx 4972 2014-05-31 16:42:18Z bruno $
{L3 Dimensions and skips}
\cs_new_eq:NN \if_dim:w \tex_ifdim:D
\cs_new_eq:NN \__dim_eval:w \etex_dimexpr:D
@@ -7929,27 +7957,22 @@
\cs_new:Npn \dim_eval:n #1
{ \dim_use:N \__dim_eval:w #1 \__dim_eval_end: }
\cs_new:Npn \__dim_strip_bp:n #1
- {
- \__dim_strip_pt:n
- {
- \__dim_eval:w ( #1 ) * 800 / 803 \__dim_eval_end:
- }
- }
+ { \__dim_strip_pt:n { ( #1 ) * 800 / 803 } }
\cs_new:Npn \__dim_strip_pt:n #1
{
\exp_after:wN
- \__dim_strip_pt:w \dim_use:N \__dim_eval:w #1 \__dim_eval_end: \q_stop
+ \__dim_strip_pt:w \dim_use:N \__dim_eval:w (#1) \__dim_eval_end:
}
\use:x
{
\cs_new:Npn \exp_not:N \__dim_strip_pt:w
- ##1 . ##2 \tl_to_str:n { pt } ##3 \exp_not:N \q_stop
+ ##1 . ##2 \tl_to_str:n { pt }
+ }
{
- ##1
- \exp_not:N \int_compare:nNnT {##2} > \c_zero
- { . ##2 }
+ \int_compare:nNnTF {#2} > \c_zero
+ { #1 . #2 }
+ { #1 }
}
- }
\cs_new_eq:NN \dim_use:N \tex_the:D
\cs_generate_variant:Nn \dim_use:N { c }
\cs_new_eq:NN \dim_show:N \__kernel_register_show:N
@@ -8010,7 +8033,7 @@
\prg_new_conditional:Npnn \skip_if_eq:nn #1#2 { p , T , F , TF }
{
\if_int_compare:w
- \pdftex_strcmp:D { \skip_eval:n { #1 } } { \skip_eval:n { #2 } }
+ \__str_if_eq_x:nn { \skip_eval:n { #1 } } { \skip_eval:n { #2 } }
= \c_zero
\prg_return_true:
\else:
@@ -8143,7 +8166,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3keys.dtx 4753 2014-05-08 20:12:49Z joseph $
+\GetIdInfo$Id: l3keys.dtx 5093 2014-06-08 20:33:14Z joseph $
{L3 Key-value interfaces}
\int_new:N \g__keyval_level_int
\tl_new:N \l__keyval_key_tl
@@ -8356,20 +8379,54 @@
}
\cs_generate_variant:Nn \__keys_bool_set_inverse:Nn { c }
\cs_new_protected_nopar:Npn \__keys_choice_make:
+ { \__keys_choice_make:N \__keys_choice_find:n }
+\cs_new_protected_nopar:Npn \__keys_multichoice_make:
+ { \__keys_choice_make:N \__keys_multichoice_find:n }
+\cs_new_protected_nopar:Npn \__keys_choice_make:N #1
+ {
+ \prop_if_exist:cTF { \c__keys_info_root_tl \__keys_parent:o \l_keys_path_tl }
+ {
+ \prop_get:cnNTF { \c__keys_info_root_tl \__keys_parent:o \l_keys_path_tl }
+ { choice } \l_keys_value_tl
+ {
+ \__msg_kernel_error:nnxx { kernel } { nested-choice-key }
+ { \l_keys_path_tl } { \__keys_parent:o \l_keys_path_tl }
+ }
+ { \__keys_choice_make_aux:N #1 }
+ }
+ { \__keys_choice_make_aux:N #1 }
+ }
+\cs_new_protected_nopar:Npn \__keys_choice_make_aux:N #1
{
- \__keys_cmd_set:nn { \l_keys_path_tl }
- { \__keys_choice_find:n {##1} }
+ \__keys_cmd_set:nn { \l_keys_path_tl } { #1 {##1} }
+ \prop_put:cnn { \c__keys_info_root_tl \l_keys_path_tl } { choice }
+ { true }
\__keys_cmd_set:nn { \l_keys_path_tl / unknown }
{
\__msg_kernel_error:nnxx { kernel } { key-choice-unknown }
{ \l_keys_path_tl } {##1}
}
}
-\cs_new_protected:Npn \__keys_choices_make:nn #1#2
+\cs_new:Npn \__keys_parent:n #1
+ { \__keys_parent:wn #1 / / \q_stop { } }
+\cs_generate_variant:Nn \__keys_parent:n { o }
+\cs_new:Npn \__keys_parent:wn #1 / #2 / #3 \q_stop #4
{
- \__keys_choice_make:
+ \tl_if_blank:nTF {#2}
+ { \use_none:n #4 }
+ {
+ \__keys_parent:wn #2 / #3 \q_stop { #4 / #1 }
+ }
+ }
+\cs_new_protected_nopar:Npn \__keys_choices_make:nn
+ { \__keys_choices_make:Nnn \__keys_choice_make: }
+\cs_new_protected_nopar:Npn \__keys_multichoices_make:nn
+ { \__keys_choices_make:Nnn \__keys_multichoice_make: }
+\cs_new_protected:Npn \__keys_choices_make:Nnn #1#2#3
+ {
+ #1
\int_zero:N \l_keys_choice_int
- \clist_map_inline:nn {#1}
+ \clist_map_inline:nn {#2}
{
\int_incr:N \l_keys_choice_int
\__keys_cmd_set:nx { \l_keys_path_tl / ##1 }
@@ -8377,7 +8434,7 @@
\tl_set:Nn \exp_not:N \l_keys_choice_tl {##1}
\int_set:Nn \exp_not:N \l_keys_choice_int
{ \int_use:N \l_keys_choice_int }
- \exp_not:n {#2}
+ \exp_not:n {#3}
}
}
}
@@ -8412,34 +8469,6 @@
}
\cs_new_protected:Npn \__keys_meta_make:nn #1#2
{ \__keys_cmd_set:Vn \l_keys_path_tl { \keys_set:nn {#1} {#2} } }
-\cs_new:Npn \__keys_multichoice_find:n #1
- { \clist_map_function:nN {#1} \__keys_choice_find:n }
-\cs_new_protected_nopar:Npn \__keys_multichoice_make:
- {
- \__keys_cmd_set:nn { \l_keys_path_tl }
- { \__keys_multichoice_find:n {##1} }
- \__keys_cmd_set:nn { \l_keys_path_tl / unknown }
- {
- \__msg_kernel_error:nnxx { kernel } { key-choice-unknown }
- { \l_keys_path_tl } {##1}
- }
- }
-\cs_new_protected:Npn \__keys_multichoices_make:nn #1#2
- {
- \__keys_multichoice_make:
- \int_zero:N \l_keys_choice_int
- \clist_map_inline:nn {#1}
- {
- \int_incr:N \l_keys_choice_int
- \__keys_cmd_set:nx { \l_keys_path_tl / ##1 }
- {
- \tl_set:Nn \exp_not:N \l_keys_choice_tl {##1}
- \int_set:Nn \exp_not:N \l_keys_choice_int
- { \int_use:N \l_keys_choice_int }
- \exp_not:n {#2}
- }
- }
- }
\cs_new_protected:Npn \__keys_value_requirement:n #1
{
\prop_if_exist:cT { \c__keys_info_root_tl \l_keys_path_tl }
@@ -8778,6 +8807,8 @@
\__keys_execute:nn { \l_keys_path_tl / \tl_to_str:n {#1} }
{ \__keys_execute:nn { \l_keys_path_tl / unknown } { } }
}
+\cs_new:Npn \__keys_multichoice_find:n #1
+ { \clist_map_function:nN {#1} \__keys_choice_find:n }
\prg_new_conditional:Npnn \keys_if_exist:nn #1#2 { p , T , F , TF }
{
\cs_if_exist:cTF { \c__keys_code_root_tl #1 / #2 }
@@ -8809,7 +8840,7 @@
\__msg_kernel_new:nnnn { kernel } { key-no-property }
{ No~property~given~in~definition~of~key~'#1'. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
Inside~\keys_define:nn each~key~name~
needs~a~property: \\ \\
\iow_indent:n { #1 .<property> } \\ \\
@@ -8821,17 +8852,23 @@
The~module~'#2'~does~not~have~a~key~called~#1'.\\
Check~that~you~have~spelled~the~key~name~correctly.
}
+\__msg_kernel_new:nnnn { kernel } { nested-choice-key }
+ { Attempt~to~define~'#1'~as~a~nested~choice~key. }
+ {
+ The~key~'#1'~cannot~be~defined~as~a~choice~as~the~parent~key~'#2'~is~
+ itself~a~choice.
+ }
\__msg_kernel_new:nnnn { kernel } { property-requires-value }
{ The~property~'#1'~requires~a~value. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~was~asked~to~set~property~'#1'~for~key~'#2'.\\
No~value~was~given~for~the~property,~and~one~is~required.
}
\__msg_kernel_new:nnnn { kernel } { property-unknown }
{ The~key~property~'#1'~is~unknown. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~has~been~asked~to~set~the~property~'#1'~for~key~'#2':~
this~property~is~not~defined.
}
@@ -8892,7 +8929,7 @@
\__msg_kernel_new:nnnn { kernel } { generate-choices-before-code }
{ No~code~available~to~generate~choices~for~key~'#1'. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
Before~using~.generate_choices:n~the~code~should~be~defined~
with~'.choice_code:n'~or~'.choice_code:x'.
}
@@ -10238,7 +10275,7 @@
\if_catcode:w \scan_stop: \exp_not:N #1
\if_meaning:w \scan_stop: #1
\if_int_compare:w
- \pdftex_strcmp:D { \s__fp } { \exp_not:N #1 } = \c_zero
+ \__str_if_eq_x:nn { \s__fp } { \exp_not:N #1 } = \c_zero
0
\__msg_kernel_expandable_error:nnn
{ kernel } { fp-after-e } { floating~point~ }
@@ -10251,7 +10288,7 @@
\fi:
\else:
\if_int_compare:w
- \pdftex_strcmp:D { \__int_value:w #1 } { \tex_the:D #1 }
+ \__str_if_eq_x:nn { \__int_value:w #1 } { \tex_the:D #1 }
= \c_zero
\__int_value:w #1
\else:
@@ -10452,11 +10489,12 @@
\exp_after:wN \__fp_parse_after:ww
\tex_romannumeral:D
\__fp_parse_operand:Nw \c_minus_one
- \__fp_parse_expand:w #1 \s__fp_mark
+ \__fp_parse_expand:w #1
+ \s__fp_mark \__fp_parse_infix_end:N
\s__fp_stop
}
\cs_new:Npn \__fp_parse_after:ww
- #1@ \__fp_parse_infix_end:N \s__fp_mark \s__fp_stop
+ #1@ \__fp_parse_infix_end:N \s__fp_stop
{ \c_zero #1 }
\cs_new:Npn \__fp_parse_operand:Nw #1
{
@@ -10487,10 +10525,10 @@
{
\if_catcode:w \scan_stop: \exp_not:N #2
\if_int_compare:w
- \pdftex_strcmp:D { \s__fp_mark } { \exp_not:N #2 }
+ \__str_if_eq_x:nn { \s__fp_mark } { \exp_not:N #2 }
= \c_zero
\exp_after:wN \exp_after:wN
- \exp_after:wN \__fp_parse_infix_end:N
+ \exp_after:wN \__fp_parse_infix_mark:NNN
\else:
\exp_after:wN \exp_after:wN
\exp_after:wN \__fp_parse_infix_juxtapose:N
@@ -10529,6 +10567,7 @@
\fi:
}
\group_end:
+\cs_new:Npn \__fp_parse_infix_mark:NNN #1#2#3 { #3 #1 }
\cs_new:Npn \__fp_parse_infix_end:N #1
{ @ \use_none:n \__fp_parse_infix_end:N }
\group_begin:
@@ -10829,30 +10868,36 @@
}
\cs_new:Npn \__fp_parse_continue_compare:NNwNN #1#2 #3@ #4#5
{ #4 #2 #3@ #1 }
-\group_begin:
- \char_set_catcode_other:N \^^@
- \cs_new:Npn \fp_function:Nw #1 { ^^@ ; { \exp_after:wN #1 } }
-\group_end:
-\group_begin:
- \char_set_catcode_other:N \^^@
- \cs_new_protected:Npn \fp_new_function:Npn #1#2#
- {
- \cs_new:Npx #1
- {
- ^^@ ;
- {
- \exp_not:N \exp_after:wN
- \exp_not:N \__fp_function_args:Nwn
- \exp_not:N \exp_after:wN
- \exp_not:c { __fp_user_ \cs_to_str:N #1 }
- \exp_not:N \__int_value:w
- \int_eval:n { \tl_count:n {#2} / \c_two }
- \exp_not:N \exp_after:wN ;
- }
- }
- \cs_new:cpn { __fp_user_ \cs_to_str:N #1 } #2
- }
-\group_end:
+\cs_new:Npn \fp_function:Nw #1
+ {
+ \exp_after:wN \__fp_function_apply:nw
+ \exp_after:wN #1
+ \tex_romannumeral:D
+ \__fp_parse_operand:Nw \c_sixteen \__fp_parse_expand:w
+ }
+\cs_new_protected:Npn \fp_new_function:Npn #1#2#
+ {
+ \__fp_new_function:Ncfnn #1
+ { __fp_user_ \cs_to_str:N #1 }
+ { \int_eval:n { \tl_count:n {#2} / \c_two } }
+ {#2}
+ }
+\cs_new_protected:Npn \__fp_new_function:NNnnn #1#2#3#4#5
+ {
+ \cs_new_nopar:Npn #1
+ {
+ \exp_after:wN \__fp_function_apply:nw \exp_after:wN
+ {
+ \exp_after:wN \__fp_function_args:Nwn
+ \exp_after:wN #2
+ \__int_value:w #3 \exp_after:wN ; \exp_after:wN
+ }
+ \tex_romannumeral:D
+ \__fp_parse_operand:Nw \c_sixteen \__fp_parse_expand:w
+ }
+ \cs_new:Npn #2 #4 {#5}
+ }
+\cs_generate_variant:Nn \__fp_new_function:NNnnn { Ncf }
\cs_new:Npn \__fp_function_args:Nwn #1#2; #3
{
\int_compare:nNnTF { \tl_count:n {#3} } = {#2}
@@ -10863,34 +10908,23 @@
\c_nan_fp
}
}
-\group_begin:
- \char_set_catcode_other:N \^^@
- \cs_new:cpn { __fp_parse_prefix_ ^^@ :Nw } #1 ; #2
- {
- \exp_after:wN \__fp_function_apply:NnwN
- \exp_after:wN #1
- \exp_after:wN { #2 \exp_after:wN }
- \tex_romannumeral:D
- \__fp_parse_operand:Nw \c_sixteen \__fp_parse_expand:w
- }
-\group_end:
-\cs_new:Npn \__fp_function_apply:NnwN #1#2#3@#4
+\cs_new:Npn \__fp_function_apply:nw #1#2 @
{
- \exp_after:wN \__fp_exp_after_array_f:w
- \tex_romannumeral:D -`0
- \__fp_function_store:wwNwnn #3
- \s__fp_mark \__fp_function_store:wwNwnn ;
- \s__fp_mark \__fp_function_store_end:wnnn
- \s__fp_stop { } { } {#2}
- \s__fp_stop
- #4 #1
+ \__fp_parse:n
+ {
+ \__fp_function_store:wwNwnn #2
+ \s__fp_mark \__fp_function_store:wwNwnn ;
+ \s__fp_mark \__fp_function_store_end:wnnn
+ \s__fp_stop { } { } {#1}
+ }
+ \s__fp_mark
}
\cs_new:Npn \__fp_function_store:wwNwnn
#1; #2 \s__fp_mark #3#4 \s__fp_stop #5#6
{ #3 #2 \s__fp_mark #3#4 \s__fp_stop { #5 #6 } { { #1; } } }
\cs_new:Npn \__fp_function_store_end:wnnn
#1 \s__fp_stop #2#3#4
- { \__fp_parse:n { #4 {#2} } }
+ { #4 {#2} }
\__msg_kernel_new:nnn { kernel } { unknown-fp-word }
{ Unknown~fp~word~#1. }
\__msg_kernel_new:nnn { kernel } { fp-missing }
@@ -12978,7 +13012,7 @@
}
\cs_new:Npn \__fp_pow_normal:ww \s__fp \__fp_chk:w 1 #1#2#3; \s__fp \__fp_chk:w #4#5
{
- \if_int_compare:w \pdftex_strcmp:D { #2 #3 }
+ \if_int_compare:w \__str_if_eq_x:nn { #2 #3 }
{ 1 {1000} {0000} {0000} {0000} } = \c_zero
\if_int_compare:w #4 #1 = 32 \exp_stop_f:
\exp_after:wN \__fp_case_return_ii_o:ww
@@ -14354,147 +14388,6 @@
\fp_new:N \l_tmpb_fp
\fp_new:N \g_tmpa_fp
\fp_new:N \g_tmpb_fp
-%% File: l3fp-old.dtx Copyright (C) 2012,2014 The LaTeX3 Project
-%%
-%% It may be distributed and/or modified under the conditions of the
-%% LaTeX Project Public License (LPPL), either version 1.3c of this
-%% license or (at your option) any later version. The latest version
-%% of this license is in the file
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% This file is part of the "l3kernel bundle" (The Work in LPPL)
-%% and all files in that bundle must be distributed together.
-%%
-%% The released version of this bundle is available from CTAN.
-%%
-%% -----------------------------------------------------------------------
-%%
-%% The development version of the bundle can be found at
-%%
-%% http://www.latex-project.org/svnroot/experimental/trunk/
-%%
-%% for those people who are interested.
-%%
-%%%%%%%%%%%
-%% NOTE: %%
-%%%%%%%%%%%
-%%
-%% Snapshots taken from the repository represent work in progress and may
-%% not work or may contain conflicting material! We therefore ask
-%% people _not_ to put them into distributions, archives, etc. without
-%% prior consultation with the LaTeX3 Project Team.
-%%
-%% -----------------------------------------------------------------------
-%%
-\fp_const:Nn \c_undefined_fp { nan }
-\prg_new_conditional:Npnn \fp_if_undefined:N #1 { p , T , F , TF }
- { \exp_after:wN \__fp_if_undefined:w #1 }
-\cs_new:Npn \__fp_if_undefined:w \s__fp \__fp_chk:w #1#2;
- {
- \if_int_compare:w #1 > \c_one
- \prg_return_true: \else: \prg_return_false: \fi:
- }
-\prg_new_conditional:Npnn \fp_if_zero:N #1 { p , T , F , TF }
- { \exp_after:wN \__fp_if_zero:w #1 }
-\cs_new:Npn \__fp_if_zero:w \s__fp \__fp_chk:w #1#2;
- { \if_meaning:w #1 0 \prg_return_true: \else: \prg_return_false: \fi: }
-\cs_new_protected_nopar:Npn \fp_abs:N { \__fp_abs:NNN \tl_set:Nx \__fp_abs_o:w }
-\cs_new_protected_nopar:Npn \fp_gabs:N { \__fp_abs:NNN \tl_gset:Nx \__fp_abs_o:w }
-\cs_new_protected_nopar:Npx \fp_neg:N
- {
- \exp_not:N \__fp_abs:NNN
- \exp_not:N \tl_set:Nx
- \exp_not:c { __fp_-_o:w }
- }
-\cs_new_protected_nopar:Npx \fp_gneg:N
- {
- \exp_not:N \__fp_abs:NNN
- \exp_not:N \tl_gset:Nx
- \exp_not:c { __fp_-_o:w }
- }
-\cs_new_protected:Npn \__fp_abs:NNN #1#2#3
- { #1 #3 { \exp_after:wN #2 #3 \prg_do_nothing: } }
-\cs_generate_variant:Nn \fp_abs:N { c }
-\cs_generate_variant:Nn \fp_gabs:N { c }
-\cs_generate_variant:Nn \fp_neg:N { c }
-\cs_generate_variant:Nn \fp_gneg:N { c }
-\cs_new_protected_nopar:Npn \fp_mul:Nn { \__fp_mul:NNNn \fp_set:Nn * }
-\cs_new_protected_nopar:Npn \fp_gmul:Nn { \__fp_mul:NNNn \fp_gset:Nn * }
-\cs_new_protected_nopar:Npn \fp_div:Nn { \__fp_mul:NNNn \fp_set:Nn / }
-\cs_new_protected_nopar:Npn \fp_gdiv:Nn { \__fp_mul:NNNn \fp_gset:Nn / }
-\cs_new_protected_nopar:Npn \fp_pow:Nn { \__fp_mul:NNNn \fp_set:Nn ^ }
-\cs_new_protected_nopar:Npn \fp_gpow:Nn { \__fp_mul:NNNn \fp_gset:Nn ^ }
-\cs_new_protected:Npn \__fp_mul:NNNn #1#2#3#4
- { #1 #3 { #3 #2 \__fp_parse:n {#4} } }
-\cs_generate_variant:Nn \fp_mul:Nn { c }
-\cs_generate_variant:Nn \fp_gmul:Nn { c }
-\cs_generate_variant:Nn \fp_div:Nn { c }
-\cs_generate_variant:Nn \fp_gdiv:Nn { c }
-\cs_generate_variant:Nn \fp_pow:Nn { c }
-\cs_generate_variant:Nn \fp_gpow:Nn { c }
-\cs_set_protected:Npn \__fp_tmp:w #1#2#3#4#5
- {
- \cs_new_protected_nopar:Npn #1 { #5 {#4} \tl_set_eq:NN #3 }
- \cs_new_protected_nopar:Npn #2 { #5 {#4} \tl_gset_eq:NN #3 }
- \cs_generate_variant:Nn #1 { c }
- \cs_generate_variant:Nn #2 { c }
- }
-\__fp_tmp:w \fp_exp:Nn \fp_gexp:Nn \__fp_exp_o:w {exp} \__fp_assign_to:nNNNn
-\__fp_tmp:w \fp_ln:Nn \fp_gln:Nn \__fp_ln_o:w {ln } \__fp_assign_to:nNNNn
-\__fp_tmp:w \fp_sin:Nn \fp_gsin:Nn \__fp_sin_o:w {sin} \__fp_assign_to:nNNNn
-\__fp_tmp:w \fp_cos:Nn \fp_gcos:Nn \__fp_cos_o:w {cos} \__fp_assign_to:nNNNn
-\__fp_tmp:w \fp_tan:Nn \fp_gtan:Nn \__fp_tan_o:w {tan} \__fp_assign_to:nNNNn
-\cs_new_protected:Npn \__fp_assign_to:nNNNn #1#2#3#4#5
- {
- \exp_after:wN \__fp_assign_to_i:wNNNn
- \tex_romannumeral:D -`0 \__fp_parse:n {#5} {#1} #2#3#4
- }
-\cs_new_protected:Npn \__fp_assign_to_i:wNNNn \s__fp \__fp_chk:w #1#2#3; #4
- {
- \exp_args:Nc \__fp_assign_to_ii:NnNNN
- { c__fp_ #4 [ #1 # 2 \if_meaning:w 1 #1 #3 \fi: ] _fp }
- { #1#2#3 }
- }
-\cs_new_protected:Npn \__fp_assign_to_ii:NnNNN #1#2#3#4#5
- {
- \cs_if_exist:NF #1
- { \tl_const:Nx #1 { #4 \s__fp \__fp_chk:w #2; } }
- #3 #5 #1
- }
-\cs_new_protected_nopar:Npn \fp_compare:NNNTF { \fp_compare:nNnTF }
-\cs_new_protected_nopar:Npn \fp_compare:NNNT { \fp_compare:nNnT }
-\cs_new_protected_nopar:Npn \fp_compare:NNNF { \fp_compare:nNnF }
-\cs_new_protected_nopar:Npn \fp_round_places:Nn
- { \__fp_round_places:NNn \tl_set:Nx }
-\cs_new_protected_nopar:Npn \fp_ground_places:Nn
- { \__fp_round_places:NNn \tl_gset:Nx }
-\cs_new_protected:Npn \__fp_round_places:NNn #1#2#3
- {
- #1 #2
- {
- \exp_after:wN \exp_after:wN
- \exp_after:wN \__fp_round:Nwn
- \exp_after:wN \exp_after:wN
- \exp_after:wN \__fp_round_to_nearest:NNN
- \exp_after:wN #2
- \exp_after:wN { \int_use:N \__int_eval:w #3 }
- }
- }
-\cs_generate_variant:Nn \fp_round_places:Nn { c }
-\cs_generate_variant:Nn \fp_ground_places:Nn { c }
-\cs_new_protected:Npn \fp_round_figures:Nn #1#2
- {
- \__fp_round_places:NNn \tl_set:Nx #1
- { #2 - \exp_after:wN \__fp_exponent:w #1 }
- }
-\cs_new_protected:Npn \fp_ground_figures:Nn #1#2
- {
- \__fp_round_places:NNn \tl_gset:Nx #1
- { #2 - \exp_after:wN \__fp_exponent:w #1 }
- }
-\cs_generate_variant:Nn \fp_round_figures:Nn { c }
-\cs_generate_variant:Nn \fp_ground_figures:Nn { c }
%% File: l3box.dtx Copyright (C) 2005-2014 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
@@ -14527,7 +14420,7 @@
%% prior consultation with the LaTeX3 Project.
%%
%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3box.dtx 4728 2014-05-04 13:25:37Z joseph $
+\GetIdInfo$Id: l3box.dtx 4974 2014-05-31 18:28:43Z mittelba $
{L3 Experimental boxes}
\cs_new_protected:Npn \box_new:N #1
{
@@ -14771,7 +14664,7 @@
%%
%% -----------------------------------------------------------------------
%%
-\GetIdInfo$Id: l3coffins.dtx 4728 2014-05-04 13:25:37Z joseph $
+\GetIdInfo$Id: l3coffins.dtx 4899 2014-05-28 20:13:51Z joseph $
{L3 Coffin code layer}
\box_new:N \l__coffin_internal_box
\dim_new:N \l__coffin_internal_dim
@@ -15540,7 +15433,7 @@
\__msg_kernel_new:nnnn { kernel } { no-pole-intersection }
{ No~intersection~between~coffin~poles. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~was~asked~to~find~the~intersection~between~two~poles,~
but~they~do~not~have~a~unique~meeting~point:~
the~value~(0~pt,~0~pt)~will~be~used.
@@ -15551,7 +15444,7 @@
\__msg_kernel_new:nnnn { kernel } { unknown-coffin-pole }
{ Pole~'#1'~unknown~for~coffin~'#2'. }
{
- \c_msg_coding_error_text_tl
+ \c__msg_coding_error_text_tl
LaTeX~was~asked~to~find~a~typesetting~pole~for~a~coffin,~
but~either~the~coffin~does~not~exist~or~the~pole~name~is~wrong.
}
@@ -15617,174 +15510,6 @@
{ \cs_set_protected_nopar:Npn \color_ensure_current: { \set@color } }
}
}
-%% File: l3luatex.dtx Copyright (C) 2010-2014 The LaTeX3 Project
-%%
-%% It may be distributed and/or modified under the conditions of the
-%% LaTeX Project Public License (LPPL), either version 1.3c of this
-%% license or (at your option) any later version. The latest version
-%% of this license is in the file
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% This file is part of the "l3kernel bundle" (The Work in LPPL)
-%% and all files in that bundle must be distributed together.
-%%
-%% The released version of this bundle is available from CTAN.
-%%
-%% -----------------------------------------------------------------------
-%%
-%% The development version of the bundle can be found at
-%%
-%% http://www.latex-project.org/svnroot/experimental/trunk/
-%%
-%% for those people who are interested.
-%%
-%%%%%%%%%%%
-%% NOTE: %%
-%%%%%%%%%%%
-%%
-%% Snapshots taken from the repository represent work in progress and may
-%% not work or may contain conflicting material! We therefore ask
-%% people _not_ to put them into distributions, archives, etc. without
-%% prior consultation with the LaTeX3 Project.
-%%
-%% -----------------------------------------------------------------------
-\GetIdInfo$Id: l3luatex.dtx 4712 2014-04-30 08:17:49Z joseph $
- {L3 Experimental LuaTeX-specific functions}
-\luatex_if_engine:TF
- {
- \cs_new_eq:NN \lua_now_x:n \luatex_directlua:D
- \cs_new_eq:NN \lua_shipout_x:n \luatex_latelua:D
- }
- {
- \cs_new:Npn \lua_now_x:n #1
- {
- \__msg_kernel_expandable_error:nnn
- { kernel } { bad-engine } { \lua_now_x:n }
- }
- \cs_new_protected:Npn \lua_shipout_x:n #1
- {
- \__msg_kernel_expandable_error:nnn
- { kernel } { bad-engine } { \lua_shipout_x:n }
- }
- }
-\cs_generate_variant:Nn \lua_now_x:n { x }
-\cs_new:Npn \lua_now:n #1
- { \lua_now_x:n { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \lua_now:n { x }
-\cs_generate_variant:Nn \lua_shipout_x:n { x }
-\cs_new_protected:Npn \lua_shipout:n #1
- { \lua_shipout_x:n { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \lua_shipout:n { x }
-\int_new:N \g__cctab_allocate_int
-\int_set:Nn \g__cctab_allocate_int { \c_minus_one }
-\int_new:N \g__cctab_stack_int
-\seq_new:N \g__cctab_stack_seq
-\cs_new_protected:Npn \cctab_new:N #1
- {
- \__chk_if_free_cs:N #1
- \int_gadd:Nn \g__cctab_allocate_int { \c_two }
- \int_compare:nNnTF
- \g__cctab_allocate_int < { \c_max_register_int + \c_one }
- {
- \tex_global:D \tex_chardef:D #1 \g__cctab_allocate_int
- \luatex_initcatcodetable:D #1
- }
- { \__msg_kernel_fatal:nnx { kernel } { out-of-registers } { cctab } }
- }
-\luatex_if_engine:F
- {
- \cs_set_protected:Npn \cctab_new:N #1
- {
- \__msg_kernel_error:nnx { kernel } { bad-engine }
- { \exp_not:N \cctab_new:N }
- }
- }
-\luatex_if_engine:T
- {
- \cs_set_protected:Npn \cctab_new:N #1
- {
- \__chk_if_free_cs:N #1
- \newcatcodetable #1
- \luatex_initcatcodetable:D #1
- }
- }
-\cs_new_protected:Npn \cctab_begin:N #1
- {
- \seq_gpush:Nx \g__cctab_stack_seq { \tex_the:D \luatex_catcodetable:D }
- \luatex_catcodetable:D #1
- \int_gadd:Nn \g__cctab_stack_int { \c_two }
- \int_compare:nNnT \g__cctab_stack_int > \c_max_register_int
- { \__msg_kernel_fatal:nn { kernel } { cctab-stack-full } }
- \luatex_savecatcodetable:D \g__cctab_stack_int
- \luatex_catcodetable:D \g__cctab_stack_int
- }
-\cs_new_protected_nopar:Npn \cctab_end:
- {
- \int_gsub:Nn \g__cctab_stack_int { \c_two }
- \seq_if_empty:NTF \g__cctab_stack_seq
- { \tl_set:Nn \l__cctab_internal_tl { 0 } }
- { \seq_gpop:NN \g__cctab_stack_seq \l__cctab_internal_tl }
- \luatex_catcodetable:D \l__cctab_internal_tl \scan_stop:
- }
-\luatex_if_engine:F
- {
- \cs_set_protected:Npn \cctab_begin:N #1
- {
- \__msg_kernel_error:nnxx { kernel } { bad-engine }
- { \exp_not:N \cctab_begin:N } {#1}
- }
- \cs_set_protected_nopar:Npn \cctab_end:
- {
- \__msg_kernel_error:nnx { kernel } { bad-engine }
- { \exp_not:N \cctab_end: }
- }
- }
-\luatex_if_engine:T
- {
- \cs_set_protected:Npn \cctab_begin:N #1 { \BeginCatcodeRegime #1 }
- \cs_set_protected_nopar:Npn \cctab_end: { \EndCatcodeRegime }
- }
-\tl_new:N \l__cctab_internal_tl
-\cs_new_protected:Npn \cctab_gset:Nn #1#2
- {
- \group_begin:
- #2
- \luatex_savecatcodetable:D #1
- \group_end:
- }
-\luatex_if_engine:F
- {
- \cs_set_protected:Npn \cctab_gset:Nn #1#2
- {
- \__msg_kernel_error:nnxx { kernel } { bad-engine }
- { \exp_not:N \cctab_gset:Nn } { #1 {#2} }
- }
- }
-\luatex_if_engine:T
- {
- \cctab_new:N \c_code_cctab
- \cctab_gset:Nn \c_code_cctab { }
- }
-\luatex_if_engine:T
- {
- \cs_new_eq:NN \c_document_cctab \CatcodeTableLaTeX
- \cs_new_eq:NN \c_initex_cctab \CatcodeTableIniTeX
- \cs_new_eq:NN \c_other_cctab \CatcodeTableOther
- \cs_new_eq:NN \c_str_cctab \CatcodeTableString
- }
-\__msg_kernel_new:nnnn { kernel } { bad-engine }
- { LuaTeX~engine~not~in~use!~Ignoring~#1. }
- {
- The~feature~you~are~using~is~only~available~
- with~the~LuaTeX~engine.~LaTeX3~ignored~`#1#2'.
- }
-\__msg_kernel_new:nnnn { kernel } { cctab-stack-full }
- { The~category~code~table~stack~is~exhausted. }
- {
- LaTeX~has~been~asked~to~switch~to~a~new~category~code~table,~
- but~there~is~no~more~space~to~do~this!
- }
%% File: l3candidates.dtx Copyright(C) 2012-2014 The LaTeX3 Project
%%
%% It may be distributed and/or modified under the conditions of the
@@ -15818,7 +15543,7 @@
%%
%% -----------------------------------------------------------------------
%%
-\GetIdInfo$Id: l3candidates.dtx 4734 2014-05-04 21:48:49Z joseph $
+\GetIdInfo$Id: l3candidates.dtx 4972 2014-05-31 16:42:18Z bruno $
{L3 Experimental additions to l3kernel}
\fp_new:N \l__box_angle_fp
\fp_new:N \l__box_cos_fp
@@ -16043,8 +15768,15 @@
\hbox_overlap_right:n { \box_use:N #1 }
\__driver_box_scale_end:
}
- \box_set_ht:Nn \l__box_internal_box { \l__box_top_new_dim }
- \box_set_dp:Nn \l__box_internal_box { \l__box_bottom_new_dim }
+ \fp_compare:nNnTF \l__box_scale_y_fp > \c_zero_fp
+ {
+ \box_set_ht:Nn \l__box_internal_box { \l__box_top_new_dim }
+ \box_set_dp:Nn \l__box_internal_box { -\l__box_bottom_new_dim }
+ }
+ {
+ \box_set_dp:Nn \l__box_internal_box { \l__box_top_new_dim }
+ \box_set_ht:Nn \l__box_internal_box { -\l__box_bottom_new_dim }
+ }
\fp_compare:nNnTF \l__box_scale_x_fp < \c_zero_fp
{
\hbox_to_wd:nn { \l__box_right_new_dim }
@@ -16669,12 +16401,12 @@
{
\dim_to_pt:n
{
- 1pt * \__dim_to_unit:n { \dim_to_pt:n {#1} pt }
- / \__dim_to_unit:n { \dim_to_pt:n {#2} pt }
+ 1pt *
+ \dim_ratio:nn
+ { \dim_to_pt:n {#1} pt }
+ { \dim_to_pt:n {#2} pt }
}
}
-\cs_new:Npn \__dim_to_unit:n #1
- { \__int_value:w \__dim_eval:w #1 \__dim_eval_end: }
\cs_new:Npn \skip_split_finite_else_action:nnNN #1#2#3#4
{
\skip_if_finite:nTF {#1}