%% %% This is file `l3msg.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% l3msg.dtx (with options: `package') %% %% EXPERIMENTAL CODE %% %% Do not distribute this file without also distributing the %% source files specified above. %% %% Do not distribute a modified version of this file. %% %% File: l3msg.dtx Copyright (C) 2009-2012 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. %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} \GetIdInfo$Id: l3msg.dtx 4077 2012-08-10 23:30:52Z bruno $ {L3 Messages} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} \__expl_package_check: \tl_new:N \l__msg_internal_tl \tl_const:Nn \c__msg_text_prefix_tl { msg~text~>~ } \tl_const:Nn \c__msg_more_text_prefix_tl { msg~extra~text~>~ } \prg_new_conditional:Npnn \msg_if_exist:nn #1#2 { p , T , F , TF } { \cs_if_exist:cTF { \c__msg_text_prefix_tl #1 / #2 } { \prg_return_true: } { \prg_return_false: } } \cs_new_protected:Npn \__chk_if_free_msg:nn #1#2 { \msg_if_exist:nnT {#1} {#2} { \__msg_kernel_error:nnxx { kernel } { message-already-defined } {#1} {#2} } } \tex_ifodd:D \l@expl@log@functions@bool \cs_gset_protected:Npn \__chk_if_free_msg:nn #1#2 { \msg_if_exist:nnT {#1} {#2} { \__msg_kernel_error:nnxx { kernel } { message-already-defined } {#1} {#2} } \iow_log:x { Defining~message~ #1 / #2 ~\msg_line_context: } } \fi: \cs_new_protected:Npn \msg_new:nnnn #1#2 { \__chk_if_free_msg:nn {#1} {#2} \msg_gset:nnnn {#1} {#2} } \cs_new_protected:Npn \msg_new:nnn #1#2#3 { \msg_new:nnnn {#1} {#2} {#3} { } } \cs_new_protected:Npn \msg_set:nnnn #1#2#3#4 { \cs_set:cpn { \c__msg_text_prefix_tl #1 / #2 } ##1##2##3##4 {#3} \cs_set:cpn { \c__msg_more_text_prefix_tl #1 / #2 } ##1##2##3##4 {#4} } \cs_new_protected:Npn \msg_set:nnn #1#2#3 { \msg_set:nnnn {#1} {#2} {#3} { } } \cs_new_protected:Npn \msg_gset:nnnn #1#2#3#4 { \cs_gset:cpn { \c__msg_text_prefix_tl #1 / #2 } ##1##2##3##4 {#3} \cs_gset:cpn { \c__msg_more_text_prefix_tl #1 / #2 } ##1##2##3##4 {#4} } \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 { This~is~a~coding~error. \\ \\ } \tl_const:Nn \c_msg_continue_text_tl { Type~~to~continue } \tl_const:Nn \c_msg_critical_text_tl { Reading~the~current~file~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 { For~immediate~help~type~H~ } \tl_const:Nn \c_msg_no_info_text_tl { LaTeX~does~not~know~anything~more~about~this~error,~sorry. \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~~to~proceed. \\ If~that~doesn't~work,~type~X~~to~quit. } \tl_const:Nn \c_msg_trouble_text_tl { \\ \\ More~errors~will~almost~certainly~follow: \\ the~LaTeX~run~should~be~aborted. } \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_space_tl \msg_line_number: } \cs_new_protected:Npn \msg_interrupt:nnn #1#2#3 { \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 { \\ #3 } {#1 \\\\ #2 \\\\ \c_msg_help_text_tl } } } \cs_new_protected:Npn \__msg_interrupt_wrap:nn #1#2 { \iow_wrap:nnnN {#1} { | ~ } { } \__msg_interrupt_more_text:n \iow_wrap:nnnN {#2} { ! ~ } { } \__msg_interrupt_text:n } \cs_new_protected:Npn \__msg_interrupt_more_text:n #1 { \exp_args:Nx \tex_errhelp:D { |''''''''''''''''''''''''''''''''''''''''''''''' #1 \iow_newline: |............................................... } } \group_begin: \char_set_lccode:nn {`\{} {`\ } \char_set_lccode:nn {`\}} {`\ } \char_set_lccode:nn {`\&} {`\!} \char_set_catcode_active:N \& \tl_to_lowercase:n { \group_end: \cs_new_protected:Npn \__msg_interrupt_text:n #1 { \iow_term:x { \iow_newline: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \iow_newline: ! } \group_begin: \cs_set_protected_nopar:Npn & { \tex_errmessage:D { #1 \use_none:n { ............................................ } } } \exp_after:wN \group_end: & } } \cs_new_protected:Npn \msg_log:n #1 { \iow_log:n { ................................................. } \iow_wrap:nnnN { . ~ #1} { . ~ } { } \iow_log:n \iow_log:n { ................................................. } } \cs_new_protected:Npn \msg_term:n #1 { \iow_term:n { ************************************************* } \iow_wrap:nnnN { * ~ #1} { * ~ } { } \iow_term:n \iow_term:n { ************************************************* } } \cs_new:Npn \msg_fatal_text:n #1 { Fatal~#1~error } \cs_new:Npn \msg_critical_text:n #1 { Critical~#1~error } \cs_new:Npn \msg_error_text:n #1 { #1~error } \cs_new:Npn \msg_warning_text:n #1 { #1~warning } \cs_new:Npn \msg_info_text:n #1 { #1~info } \cs_new:Npn \msg_see_documentation_text:n #1 { \\ \\ See~the~ \str_if_eq:nnTF {#1} { LaTeX } { LaTeX3 } {#1} ~ documentation~for~further~information. } \group_begin: \cs_set_protected:Npn \__msg_class_new:nn #1#2 { \prop_new:c { l__msg_redirect_ #1 _prop } \cs_new_protected:cpn { __msg_ #1 _code:nnnnnn } ##1##2##3##4##5##6 {#2} \cs_new_protected:cpn { msg_ #1 :nnnnnn } ##1##2##3##4##5##6 { \use:x { \exp_not:n { \__msg_use:nnnnnnn {#1} {##1} {##2} } { \tl_to_str:n {##3} } { \tl_to_str:n {##4} } { \tl_to_str:n {##5} } { \tl_to_str:n {##6} } } } \cs_new_protected:cpx { msg_ #1 :nnnnn } ##1##2##3##4##5 { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} {##4} {##5} { } } \cs_new_protected:cpx { msg_ #1 :nnnn } ##1##2##3##4 { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} {##4} { } { } } \cs_new_protected:cpx { msg_ #1 :nnn } ##1##2##3 { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} { } { } { } } \cs_new_protected:cpx { msg_ #1 :nn } ##1##2 { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} { } { } { } { } } \cs_new_protected:cpx { msg_ #1 :nnxxxx } ##1##2##3##4##5##6 { \use:x { \exp_not:N \exp_not:n { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} } {##3} {##4} {##5} {##6} } } \cs_new_protected:cpx { msg_ #1 :nnxxx } ##1##2##3##4##5 { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} {##5} { } } \cs_new_protected:cpx { msg_ #1 :nnxx } ##1##2##3##4 { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} { } { } } \cs_new_protected:cpx { msg_ #1 :nnx } ##1##2##3 { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} { } { } { } } } \__msg_class_new:nn { fatal } { \msg_interrupt:nnn { \msg_fatal_text:n {#1} : ~ "#2" } { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} \msg_see_documentation_text:n {#1} } { \c_msg_fatal_text_tl } \tex_end:D } \__msg_class_new:nn { critical } { \msg_interrupt:nnn { \msg_critical_text:n {#1} : ~ "#2" } { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} \msg_see_documentation_text:n {#1} } { \c_msg_critical_text_tl } \tex_endinput:D } \__msg_class_new:nn { error } { \__msg_error:cnnnnn { \c__msg_more_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} { \msg_interrupt:nnn { \msg_error_text:n {#1} : ~ "#2" } { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} \msg_see_documentation_text:n {#1} } } } \cs_new_protected:Npn \__msg_error:cnnnnn #1#2#3#4#5#6 { \cs_if_eq:cNTF {#1} \__msg_no_more_text:nnnn { #6 { } } { #6 { \use:c {#1} {#2} {#3} {#4} {#5} } } } \cs_new:Npn \__msg_no_more_text:nnnn #1#2#3#4 { } \__msg_class_new:nn { warning } { \msg_term:n { \msg_warning_text:n {#1} : ~ "#2" \\ \\ \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} } } \__msg_class_new:nn { info } { \msg_log:n { \msg_info_text:n {#1} : ~ "#2" \\ \\ \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} } } \__msg_class_new:nn { log } { \iow_wrap:nnnN { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} } { } { } \iow_log:n } \__msg_class_new:nn { none } { } \group_end: \cs_new:Npn \__msg_class_chk_exist:nT #1 { \cs_if_free:cTF { __msg_ #1 _code:nnnnnn } { \__msg_kernel_error:nnx { kernel } { message-class-unknown } {#1} } } \tl_new:N \l__msg_class_tl \tl_new:N \l__msg_current_class_tl \prop_new:N \l__msg_redirect_prop \seq_new:N \l__msg_hierarchy_seq \seq_new:N \l__msg_class_loop_seq \cs_new_protected:Npn \__msg_use:nnnnnnn #1#2#3#4#5#6#7 { \msg_if_exist:nnTF {#2} {#3} { \__msg_class_chk_exist:nT {#1} { \tl_set:Nn \l__msg_current_class_tl {#1} \cs_set_protected_nopar:Npx \__msg_use_code: { \exp_not:n { \use:c { __msg_ \l__msg_class_tl _code:nnnnnn } {#2} {#3} {#4} {#5} {#6} {#7} } } \__msg_use_redirect_name:n { #2 / #3 } } } { \__msg_kernel_error:nnxx { kernel } { message-unknown } {#2} {#3} } } \cs_new_protected_nopar:Npn \__msg_use_code: { } \cs_new_protected:Npn \__msg_use_redirect_name:n #1 { \prop_get:NnNTF \l__msg_redirect_prop { / #1 } \l__msg_class_tl { \__msg_use_code: } { \seq_clear:N \l__msg_hierarchy_seq \__msg_use_hierarchy:nwwN { } #1 \q_mark \__msg_use_hierarchy:nwwN / \q_mark \use_none_delimit_by_q_stop:w \q_stop \__msg_use_redirect_module:n { } } } \cs_new_protected:Npn \__msg_use_hierarchy:nwwN #1#2 / #3 \q_mark #4 { \seq_put_left:Nn \l__msg_hierarchy_seq {#1} #4 { #1 / #2 } #3 \q_mark #4 } \cs_new_protected:Npn \__msg_use_redirect_module:n #1 { \seq_map_inline:Nn \l__msg_hierarchy_seq { \prop_get:cnNTF { l__msg_redirect_ \l__msg_current_class_tl _prop } {##1} \l__msg_class_tl { \seq_map_break:n { \tl_if_eq:NNTF \l__msg_current_class_tl \l__msg_class_tl { \__msg_use_code: } { \tl_set_eq:NN \l__msg_current_class_tl \l__msg_class_tl \__msg_use_redirect_module:n {##1} } } } { \str_if_eq:nnT {##1} {#1} { \tl_set_eq:NN \l__msg_class_tl \l__msg_current_class_tl \seq_map_break:n { \__msg_use_code: } } } } } \cs_new_protected:Npn \msg_redirect_name:nnn #1#2#3 { \tl_if_empty:nTF {#3} { \prop_remove:Nn \l__msg_redirect_prop { / #1 / #2 } } { \__msg_class_chk_exist:nT {#3} { \prop_put:Nnn \l__msg_redirect_prop { / #1 / #2 } {#3} } } } \cs_new_protected_nopar:Npn \msg_redirect_class:nn { \__msg_redirect:nnn { } } \cs_new_protected:Npn \msg_redirect_module:nnn #1 { \__msg_redirect:nnn { / #1 } } \cs_new_protected:Npn \__msg_redirect:nnn #1#2#3 { \__msg_class_chk_exist:nT {#2} { \tl_if_empty:nTF {#3} { \prop_remove:cn { l__msg_redirect_ #2 _prop } {#1} } { \__msg_class_chk_exist:nT {#3} { \prop_put:cnn { l__msg_redirect_ #2 _prop } {#1} {#3} \tl_set:Nn \l__msg_current_class_tl {#2} \seq_clear:N \l__msg_class_loop_seq \__msg_redirect_loop_chk:nnn {#2} {#3} {#1} } } } } \cs_new_protected:Npn \__msg_redirect_loop_chk:nnn #1#2#3 { \seq_put_right:Nn \l__msg_class_loop_seq {#1} \prop_get:cnNT { l__msg_redirect_ #1 _prop } {#3} \l__msg_class_tl { \str_if_eq_x:nnF { \l__msg_class_tl } {#1} { \tl_if_eq:NNTF \l__msg_class_tl \l__msg_current_class_tl { \prop_put:cnn { l__msg_redirect_ #2 _prop } {#3} {#2} \__msg_kernel_warning:nnxxxx { kernel } { message-redirect-loop } { \seq_item:Nn \l__msg_class_loop_seq { \c_one } } { \seq_item:Nn \l__msg_class_loop_seq { \c_two } } {#3} { \seq_map_function:NN \l__msg_class_loop_seq \__msg_redirect_loop_list:n { \seq_item:Nn \l__msg_class_loop_seq { \c_one } } } } { \__msg_redirect_loop_chk:onn \l__msg_class_tl {#2} {#3} } } } } \cs_generate_variant:Nn \__msg_redirect_loop_chk:nnn { o } \cs_new:Npn \__msg_redirect_loop_list:n #1 { {#1} ~ => ~ } \cs_new_protected:Npn \__msg_kernel_new:nnnn #1#2 { \msg_new:nnnn { LaTeX } { #1 / #2 } } \cs_new_protected:Npn \__msg_kernel_new:nnn #1#2 { \msg_new:nnn { LaTeX } { #1 / #2 } } \cs_new_protected:Npn \__msg_kernel_set:nnnn #1#2 { \msg_set:nnnn { LaTeX } { #1 / #2 } } \cs_new_protected:Npn \__msg_kernel_set:nnn #1#2 { \msg_set:nnn { LaTeX } { #1 / #2 } } \group_begin: \cs_set_protected:Npn \__msg_kernel_class_new:nN #1 { \__msg_kernel_class_new_aux:nN { kernel_ #1 } } \cs_set_protected:Npn \__msg_kernel_class_new_aux:nN #1#2 { \cs_new_protected:cpn { __msg_ #1 :nnnnnn } ##1##2##3##4##5##6 { \use:x { \exp_not:n { #2 { LaTeX } { ##1 / ##2 } } { \tl_to_str:n {##3} } { \tl_to_str:n {##4} } { \tl_to_str:n {##5} } { \tl_to_str:n {##6} } } } \cs_new_protected:cpx { __msg_ #1 :nnnnn } ##1##2##3##4##5 { \exp_not:c { __msg_ #1 :nnnnnn } {##1} {##2} {##3} {##4} {##5} { } } \cs_new_protected:cpx { __msg_ #1 :nnnn } ##1##2##3##4 { \exp_not:c { __msg_ #1 :nnnnnn } {##1} {##2} {##3} {##4} { } { } } \cs_new_protected:cpx { __msg_ #1 :nnn } ##1##2##3 { \exp_not:c { __msg_ #1 :nnnnnn } {##1} {##2} {##3} { } { } { } } \cs_new_protected:cpx { __msg_ #1 :nn } ##1##2 { \exp_not:c { __msg_ #1 :nnnnnn } {##1} {##2} { } { } { } { } } \cs_new_protected:cpx { __msg_ #1 :nnxxxx } ##1##2##3##4##5##6 { \use:x { \exp_not:N \exp_not:n { \exp_not:c { __msg_ #1 :nnnnnn } {##1} {##2} } {##3} {##4} {##5} {##6} } } \cs_new_protected:cpx { __msg_ #1 :nnxxx } ##1##2##3##4##5 { \exp_not:c { __msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} {##5} { } } \cs_new_protected:cpx { __msg_ #1 :nnxx } ##1##2##3##4 { \exp_not:c { __msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} { } { } } \cs_new_protected:cpx { __msg_ #1 :nnx } ##1##2##3 { \exp_not:c { __msg_ #1 :nnxxxx } {##1} {##2} {##3} { } { } { } } } \__msg_kernel_class_new:nN { fatal } \__msg_fatal_code:nnnnnn \cs_undefine:N \__msg_kernel_error:nnxx \cs_undefine:N \__msg_kernel_error:nnx \cs_undefine:N \__msg_kernel_error:nn \__msg_kernel_class_new:nN { error } \__msg_error_code:nnnnnn \__msg_kernel_class_new:nN { warning } \msg_warning:nnxxxx \__msg_kernel_class_new:nN { info } \msg_info:nnxxxx \group_end: \__msg_kernel_new:nnnn { kernel } { message-already-defined } { Message~'#2'~for~module~'#1'~already~defined. } { \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 } \__msg_kernel_new:nnnn { kernel } { message-unknown } { Unknown~message~'#2'~for~module~'#1'. } { \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 } \__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 } \__msg_kernel_new:nnnn { kernel } { message-redirect-loop } { Message~redirection~loop~caused~by~ {#1} ~=>~ {#2} \tl_if_empty:nF {#3} { ~for~module~' \use_none:n #3 ' } . } { Adding~the~message~redirection~ {#1} ~=>~ {#2} \tl_if_empty:nF {#3} { ~for~the~module~' \use_none:n #3 ' } ~ created~an~infinite~loop\\\\ \iow_indent:n { #4 \\\\ } } \__msg_kernel_new:nnnn { kernel } { bad-number-of-arguments } { Function~'#1'~cannot~be~defined~with~#2~arguments. } { \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. } \__msg_kernel_new:nnnn { kernel } { command-already-defined } { Control~sequence~#1~already~defined. } { \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:\\ \ \ #2 } \__msg_kernel_new:nnnn { kernel } { command-not-defined } { Control~sequence~#1~undefined. } { \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 LaTeX~has~been~asked~to~replace~an~empty~pattern~by~'#1':~that~ would~lead~to~an~infinite~loop! } \__msg_kernel_new:nnnn { kernel } { out-of-registers } { No~room~for~a~new~#1. } { TeX~only~supports~\int_use:N \c_max_register_int \ of~each~type.~All~the~#1~registers~have~been~used.~ This~run~will~be~aborted~now. } \__msg_kernel_new:nnnn { kernel } { missing-colon } { Function~'#1'~contains~no~':'. } { \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~when~building~a~ parameter~text~from~the~number~of~arguments~of~the~function. } \__msg_kernel_new:nnnn { kernel } { protected-predicate } { Predicate~'#1'~must~be~expandable. } { \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 LaTeX~has~been~asked~to~define~the~conditional~form~'#1'~of~ the~function~'#2',~but~only~'TF',~'T',~'F',~and~'p'~forms~exist. } \__msg_kernel_new:nnnn { kernel } { scanmark-already-defined } { Scan~mark~#1~already~defined. } { \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 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 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'. } \__msg_kernel_new:nnn { kernel } { bad-variable } { Erroneous~variable~#1 used! } \__msg_kernel_new:nnn { kernel } { misused-sequence } { A~sequence~was~misused. } \__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~=,~<,~>,~==,~!=,~<=,~>=. } \__msg_kernel_new:nnn { kernel } { zero-step } { Zero~step~size~for~step~function~#1. } \__msg_kernel_new:nnn { kernel } { show-clist } { The~comma~list~ \str_if_eq:nnF {#1} { \l__clist_internal_clist } { \token_to_str:N #1~} \clist_if_empty:NTF #1 { is~empty } { contains~the~items~(without~outer~braces): } } \__msg_kernel_new:nnn { kernel } { show-prop } { The~property~list~\token_to_str:N #1~ \prop_if_empty:NTF #1 { is~empty } { contains~the~pairs~(without~outer~braces): } } \__msg_kernel_new:nnn { kernel } { show-seq } { The~sequence~\token_to_str:N #1~ \seq_if_empty:NTF #1 { is~empty } { contains~the~items~(without~outer~braces): } } \__msg_kernel_new:nnn { kernel } { show-no-stream } { No~ #1 ~streams~are~open } \__msg_kernel_new:nnn { kernel } { show-open-streams } { The~following~ #1 ~streams~are~in~use: } \group_begin: \char_set_catcode_math_superscript:N \^ \char_set_lccode:nn { `^ } { `\ } \char_set_lccode:nn { `L } { `L } \char_set_lccode:nn { `T } { `T } \char_set_lccode:nn { `X } { `X } \tl_to_lowercase:n { \cs_new:Npx \__msg_expandable_error:n #1 { \exp_not:n { \tex_romannumeral:D \exp_after:wN \exp_after:wN \exp_after:wN \__msg_expandable_error:w \exp_after:wN \exp_after:wN \exp_after:wN \c_zero } \exp_not:N \use:n { \exp_not:c { LaTeX3~error: } ^ #1 } ^ } \cs_new:Npn \__msg_expandable_error:w #1 ^ #2 ^ { #1 } } \group_end: \cs_new:Npn \__msg_kernel_expandable_error:nnnnnn #1#2#3#4#5#6 { \exp_args:Nf \__msg_expandable_error:n { \exp_args:NNc \exp_after:wN \exp_stop_f: { \c__msg_text_prefix_tl LaTeX / #1 / #2 } {#3} {#4} {#5} {#6} } } \cs_new:Npn \__msg_kernel_expandable_error:nnnnn #1#2#3#4#5 { \__msg_kernel_expandable_error:nnnnnn {#1} {#2} {#3} {#4} {#5} { } } \cs_new:Npn \__msg_kernel_expandable_error:nnnn #1#2#3#4 { \__msg_kernel_expandable_error:nnnnnn {#1} {#2} {#3} {#4} { } { } } \cs_new:Npn \__msg_kernel_expandable_error:nnn #1#2#3 { \__msg_kernel_expandable_error:nnnnnn {#1} {#2} {#3} { } { } { } } \cs_new:Npn \__msg_kernel_expandable_error:nn #1#2 { \__msg_kernel_expandable_error:nnnnnn {#1} {#2} { } { } { } { } } \cs_new_protected:Npn \__msg_term:nnnnnn #1#2#3#4#5#6 { \iow_wrap:nnnN { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} } { } { } \iow_term:n } \cs_generate_variant:Nn \__msg_term:nnnnnn { nnnnnV } \cs_new_protected:Npn \__msg_term:nnnnn #1#2#3#4#5 { \__msg_term:nnnnnn {#1} {#2} {#3} {#4} {#5} { } } \cs_new_protected:Npn \__msg_term:nnn #1#2#3 { \__msg_term:nnnnnn {#1} {#2} {#3} { } { } { } } \cs_new_protected:Npn \__msg_term:nn #1#2 { \__msg_term:nnnnnn {#1} {#2} { } { } { } { } } \cs_new_protected:Npn \__msg_show_variable:Nnn #1#2#3 { \cs_if_exist:NTF #1 { \__msg_term:nnn { LaTeX / kernel } { show- #2 } {#1} \__msg_show_variable:x {#3} } { \__msg_kernel_error:nnx { kernel } { variable-not-defined } { \token_to_str:N #1 } } } \cs_generate_variant:Nn \__msg_show_variable:Nnn { Nnx } \cs_new_protected:Npn \__msg_show_variable:n #1 { \tl_set:Nn \l__msg_internal_tl {#1} \tl_if_empty:NTF \l__msg_internal_tl { \etex_showtokens:D \exp_after:wN { } } { \exp_args:Nf \etex_showtokens:D { \exp_after:wN \exp_after:wN \exp_after:wN \__msg_show_variable:w \exp_after:wN \l__msg_internal_tl } } } \cs_generate_variant:Nn \__msg_show_variable:n { x } \cs_new:Npn \__msg_show_variable:w #1 > { } \cs_new:Npn \__msg_show_item:n #1 { \iow_newline: > \c_space_tl \c_space_tl { \exp_not:n {#1} } } \cs_new:Npn \__msg_show_item:nn #1#2 { \iow_newline: > \c_space_tl \c_space_tl { \exp_not:n {#1} } \c_space_tl \c_space_tl => \c_space_tl \c_space_tl { \exp_not:n {#2} } } \cs_new:Npn \__msg_show_item_unbraced:nn #1#2 { \iow_newline: > \c_space_tl \c_space_tl \exp_not:n {#1} \c_space_tl \c_space_tl => \c_space_tl \c_space_tl \exp_not:n {#2} } \cs_new_nopar:Npn \msg_newline: { ^^J } \cs_new_nopar:Npn \msg_two_newlines: { ^^J ^^J } \cs_generate_variant:Nn \msg_log:n { x } \cs_generate_variant:Nn \msg_term:n { x } \cs_generate_variant:Nn \msg_interrupt:nnn { xxx } \cs_new_protected:Npn \msg_class_set:nn #1#2 { \cs_if_exist:cTF { __msg_ #1 _code:nnnnnn } \cs_set_protected:cpn \cs_new_protected:cpn { __msg_ #1 _code:nnnnnn } ##1##2##3##4##5##6 {#2} \prop_clear_new:c { l__msg_redirect_ #1 _prop } \cs_set_protected_nopar:cpn { msg_ #1 :nnxxxx } { \__msg_use:nnnnnnn {#1} } \cs_set_protected:cpx { msg_ #1 :nnxxx } ##1##2##3##4##5 { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} {##5} { } } \cs_set_protected:cpx { msg_ #1 :nnxx } ##1##2##3##4 { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} { } { } } \cs_set_protected:cpx { msg_ #1 :nnx } ##1##2##3 { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} { } { } { } } \cs_set_protected:cpx { msg_ #1 :nn } ##1##2 { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} { } { } { } { } } } %% %% %% End of file `l3msg.sty'.