diff options
author | Karl Berry <karl@freefriends.org> | 2014-06-17 22:32:09 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-06-17 22:32:09 +0000 |
commit | 3c2f50b92407533aabaef1823006032eedd6ef90 (patch) | |
tree | eb67245dd952c951b95c485a5eb66f9539ac83df /Master/texmf-dist/tex/latex/l3kernel | |
parent | 4aa0b8110f2fdb3044d8b26d54e12cbb49a9a3dc (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')
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex | 830 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex | 16 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/expl3.sty | 107 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/l3doc.cls | 49 |
4 files changed, 359 insertions, 643 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} diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index 5f41e03a2d2..8ec68d04b0c 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex @@ -47,8 +47,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} \let\ExplLoaderFileVersion\ExplFileVersion \begingroup \def\tempa{LaTeX2e} @@ -116,11 +116,13 @@ \xetex_if_engine:TF { xdvipdfmx } { - \ifpdf - pdfmode - \else - dvips - \fi + \bool_if:nTF + { + \cs_if_exist_p:N \pdftex_pdfoutput:D + && \int_compare_p:nNn \pdftex_pdfoutput:D > \c_zero + } + { pdfmode } + { dvips } } .def \scan_stop: \cs_undefine:N \ProvidesExplFile diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 1b25d6f4498..433b3fe9cad 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -47,15 +47,14 @@ %% ----------------------------------------------------------------------- \def\ExplFileName{expl3} \def\ExplFileDescription{L3 programming layer} -\def\ExplFileDate{2014/05/20} -\def\ExplFileVersion{4814} +\def\ExplFileDate{2014/06/10} +\def\ExplFileVersion{5105} \let\ExplLoaderFileVersion\ExplFileVersion \ProvidesPackage{\ExplFileName} [% \ExplFileDate\space v\ExplFileVersion\space \ExplFileDescription\space (loader) ] -\RequirePackage{ifpdf} \newcommand\expl@create@bool@option[2]% {% \DeclareOption{#1}{\chardef #2=1 }% @@ -109,19 +108,35 @@ active~engine.~LaTeX3~will~use~the~'#2'~driver~instead. } \tl_new:N \l__expl_driver_tl +\bool_if:nTF + { + \cs_if_exist_p:N \pdftex_pdfoutput:D + && \int_compare_p:nNn \pdftex_pdfoutput:D > \c_zero + } + { + \cs_new_eq:NN \__expl_if_pdf:T \use:n + \cs_new_eq:NN \__expl_if_pdf:F \use_none:n + \cs_new_eq:NN \__expl_if_pdf:TF \use_i:nn + } + { + \cs_new_eq:NN \__expl_if_pdf:T \use_none:n + \cs_new_eq:NN \__expl_if_pdf:F \use:n + \cs_new_eq:NN \__expl_if_pdf:TF \use_ii:nn + } \keys_define:nn { expl } { driver .choice:, driver / auto .code:n = { - \xetex_if_engine:TF - { \tl_set:Nn \l__expl_driver_tl { xdvipdfmx } } + \tl_set:Nx \l__expl_driver_tl { - \ifpdf - \tl_set:Nn \l__expl_driver_tl { pdfmode } - \else - \tl_set:Nn \l__expl_driver_tl { dvips } - \fi + \xetex_if_engine:TF + { xdvipdfmx } + { + \__expl_if_pdf:TF + { pdfmode } + { dvips } + } } }, driver / dvipdfmx .code:n = @@ -131,14 +146,15 @@ { \__msg_kernel_error:nnnn { expl } { wrong-driver } { dvipdfmx } { xdvipdfmx } - \tl_set:Nn \l__expl_driver_tl { xdvipdmx } + \tl_set:Nn \l__expl_driver_tl { xdvipdfmx } } { - \ifpdf - \__msg_kernel_error:nnnn { expl } { wrong-driver } - { dvipdfmx } { pdfmode } - \tl_set:Nn \l__expl_driver_tl { pdfmode } - \fi + \__expl_if_pdf:T + { + \__msg_kernel_error:nnnn { expl } { wrong-driver } + { dvipdfmx } { pdfmode } + \tl_set:Nn \l__expl_driver_tl { pdfmode } + } } }, driver / dvips .code:n = @@ -151,11 +167,12 @@ \tl_set:Nn \l__expl_driver_tl { xdvipdfmx } } { - \ifpdf - \__msg_kernel_error:nnnn { expl } { wrong-driver } - { dvips } { pdfmode } - \tl_set:Nn \l__expl_driver_tl { pdfmode } - \fi + \__expl_if_pdf:T + { + \__msg_kernel_error:nnnn { expl } { wrong-driver } + { dvips } { pdfmode } + \tl_set:Nn \l__expl_driver_tl { pdfmode } + } } }, driver / latex2e .code:n = @@ -170,12 +187,12 @@ \tl_set:Nn \l__expl_driver_tl { xdvipdfmx } } { - \ifpdf - \else - \__msg_kernel_error:nnnn { expl } { wrong-driver } - { pdfmode } { dvips } - \tl_set:Nn \l__expl_driver_tl { dvips } - \fi + \__expl_if_pdf:F + { + \__msg_kernel_error:nnnn { expl } { wrong-driver } + { pdfmode } { dvips } + \tl_set:Nn \l__expl_driver_tl { dvips } + } } }, driver / xdvipdfmx .code:n = @@ -183,18 +200,20 @@ \tl_set:Nn \l__expl_driver_tl { xdvipdfmx } \xetex_if_engine:F { - \ifpdf - \__msg_kernel_error:nnnn { expl } { wrong-driver } - { xdvipdfmx } { pdfmode } - \tl_set:Nn \l__expl_driver_tl { pdfmode } - \else - \__msg_kernel_error:nnnn { expl } { wrong-driver } - { xdvipdfmx } { dvips } - \tl_set:Nn \l__expl_driver_tl { dvips } - \fi + \__expl_if_pdf:TF + { + \__msg_kernel_error:nnnn { expl } { wrong-driver } + { xdvipdfmx } { pdfmode } + \tl_set:Nn \l__expl_driver_tl { pdfmode } + } + { + \__msg_kernel_error:nnnn { expl } { wrong-driver } + { xdvipdfmx } { dvips } + \tl_set:Nn \l__expl_driver_tl { dvips } + } } }, - driver .initial:n = { latex2e } , + driver .initial:n = { auto } , native-drivers .choice:, native-drivers .default:n = { true }, native-drivers / false .meta:n = { driver = latex2e }, @@ -259,8 +278,17 @@ } } { - \cs_set_protected:Npn \ProvidesExplFile #1#2#3#4 - { \ProvidesFile {#1} [ #2~v#3~#4 ] } + \cs_set_protected:Npn \ProvidesExplFile + { + \group_begin: + \char_set_catcode_space:n { `\ } + \ProvidesExplFileAux + } + \cs_set_protected:Npn \ProvidesExplFileAux #1#2#3#4 + { + \group_end: + \ProvidesFile {#1} [ #2~v#3~#4 ] + } \tl_const:Nn \c__expl_def_ext_tl { def } \@onefilewithoptions { l3 \l__expl_driver_tl } [ ] [ ] \c__expl_def_ext_tl \cs_set_protected:Npn \ProvidesExplFile #1#2#3#4 @@ -268,6 +296,7 @@ \ProvidesFile {#1} [ #2~v#3~#4 ] \ExplSyntaxOn } + \cs_undefine:N \ProvidesExplFileAux } \tl_put_left:Nn \@pushfilename { diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls index 87772eedfb7..a4573ca67cd 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls +++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls @@ -4,8 +4,7 @@ %% %% The original source files were: %% -%% l3doc.dtx (with options: `class,cfg') -%% +%% l3doc.dtx (with options: `class') %% %% EXPERIMENTAL CODE %% @@ -14,7 +13,6 @@ %% %% Do not distribute a modified version of this file. %% -%% %% File: l3doc.dtx Copyright (C) 1990-2014 The LaTeX3 project %% %% It may be distributed and/or modified under the conditions of the @@ -1460,51 +1458,6 @@ \DisableCrossrefs \OnlyDescription } -\tl_new:N \Team -\tl_set:Nn \Team - { - The~\LaTeX3~Project\thanks - { - Frank~Mittelbach,~Denys~Duchier,~Chris~Rowley,~ - Rainer~Sch\"opf,~Johannes~Braams,~Michael~Downes,~ - David~Carlisle,~Alan~Jeffrey,~Morten~H\o{}gholm,~Thomas~Lotze,~ - Javier~Bezos,~Will~Robertson,~Joseph~Wright,~Bruno~Le~Floch - } - } -\NewDocumentCommand{\ExplMakeTitle}{mm} - { - \title - { - The~\pkg{#1}~package \\ #2 - \thanks - { - This~file~describes~v\ExplFileVersion,~ - last~revised~\ExplFileDate. - } - } - \author - { - The~\LaTeX3~Project\thanks{E-mail:~ - \href{mailto:latex-l@listserv.uni-heidelberg.de} - {latex-l@listserv.uni-heidelberg.de}} - } - \date{Released~\ExplFileDate} - \maketitle - } -\DeclareDocumentCommand\ie{}{\emph{i.e.}} -\DeclareDocumentCommand\eg{}{\emph{e.g.}} -\DeclareDocumentCommand\Ie{}{\emph{I.e.}} -\DeclareDocumentCommand\Eg{}{\emph{E.g.}} -\AtBeginDocument - { - \clist_map_inline:nn - { - asin, acos, atan, acot, - asinh, acosh, atanh, acoth, round, floor, ceil - } - { \exp_args:Nc \DeclareMathOperator{#1}{#1} } - } -\NewDocumentCommand { \nan } { } { \text { \texttt { nan } } } %% %% %% End of file `l3doc.cls'. |