%% %% This is file `l3basics.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% l3basics.dtx (with options: `package,trace') %% %% %% 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: l3basics.dtx Copyright (C) 1990-1998 LaTeX3 project \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{l3basics} [1998/05/04 v1.0i L3 Experimental basic definitions] \RequirePackage{l3names}\par \tex_let:D \let:NwN \tex_let:D \let:NwN \def:Npn \tex_def:D \let:NwN \gdef:Npn \tex_gdef:D \let:NwN \def:Npx \tex_edef:D \let:NwN \gdef:Npx \tex_xdef:D \let:NwN \if:w \tex_if:D \let:NwN \if_num:w \tex_ifnum:D \let:NwN \if_meaning:NN \tex_ifx:D \let:NwN \if_false: \tex_iffalse:D \let:NwN \else: \tex_else:D \let:NwN \fi: \tex_fi:D \let:NwN \io_put_deferred:Nx \tex_write:D \let:NwN \token_to_meaning:N \tex_meaning:D \let:NwN \token_to_string:N \tex_string:D \let:NwN \cs:w \tex_csname:D \let:NwN \cs_end: \tex_endcsname:D \let:NwN \exp_after:NN \tex_expandafter:D \let:NwN \scan_stop: \tex_relax:D \let:NwN \exp_not:N \tex_noexpand:D \let:NwN \group_begin: \tex_begingroup:D \let:NwN \group_end: \tex_endgroup:D \let:NwN \the_internal:D \tex_the:D \let:NwN \pref_global:D \tex_global:D \let:NwN\c_minus_one\m@ne \tex_chardef:D \c_one = 1\scan_stop: \tex_chardef:D \c_sixteen = 16\scan_stop: \tex_mathchardef:D \c_two_hundred_fifty_six = 256\scan_stop: \def:Npn \io_put_log:x{ \tex_immediate:D\io_put_deferred:Nx \c_minus_one } \def:Npn \io_put_term:x{ \tex_immediate:D\io_put_deferred:Nx \c_sixteen } \def:Npn\err_latex_bug:n#1{ \io_put_term:x{This~is~a~LaTeX~bug!~Check~coding!}\tex_errmessage:D{#1}} \def:Npn \cs_record_meaning:N#1{} \def:Npn \chk_new_cs:N #1{ \if_meaning:NN #1\c_undefined \else: \if_meaning:NN #1\scan_stop: \else: \err_latex_bug:n {Command~name~`\token_to_string:N #1'~ already~defined!~ Current~meaning:~\token_to_meaning:N #1 } \fi: \fi: \cs_record_meaning:N#1 \io_put_log:x{Defining~\token_to_string:N #1~on~ line~\tex_the:D \tex_inputlineno:D} } \def:Npn \cs_exist_p:N #1{ \if:w \cs_free_p:N #1 \c_false \else: \c_true \fi:} \def:Npn \chk_exist_cs:N #1 { \if:w \cs_exist_p:N #1 \else: \err_latex_bug:n{Command~ `\token_to_string:N #1'~ not~ yet~ defined!} \fi:} \def:Npn \cs_free_p:N #1{ \if_meaning:NN#1\c_undefined \if:w\cs_eq_p:NN #1\c_undefined \c_false \else: \c_true \fi: \else: \if_meaning:NN#1\scan_stop: \if:w\cs_eq_p:NN #1\scan_stop: \c_false \else: \c_true \fi: \else: \c_false \fi:\fi:} \tex_long:D\def:Npn \let:NN #1{ \let:NwN #1=~} \def:Npn\let:cN #1 {\exp_after:NN\let:NwN\cs:w#1\cs_end:=~} \def:Npn\let:Nc{\exp_args:NNc\let:NN} \def:Npn\let:cc{\exp_args:Ncc\let:NN} \def:Npn \def_new:Npn #1{\chk_new_cs:N #1 \def:Npn #1} \def:Npn \def_new:Npx #1{\chk_new_cs:N #1 \def:Npx #1} \def_new:Npn \let_new:NN #1{\chk_new_cs:N #1 \let:NN #1} \def_new:Npn \def:cpn #1{\exp_after:NN \def:Npn \cs:w #1\cs_end:} \def_new:Npn \def:cpx #1{\exp_after:NN \def:Npx \cs:w #1\cs_end:} \def_new:Npn \def_new:cpn #1{\exp_after:NN \def_new:Npn \cs:w #1\cs_end:} \def_new:Npn \def_new:cpx #1{\exp_after:NN \def_new:Npx \cs:w #1\cs_end:} \def_new:Npn \def:No{\exp_args:NNo\def:Npn} \def_new:Npn \def_long:Npn {\tex_long:D\def:Npn} \def_new:Npn \def_long_new:Npn #1{\chk_new_cs:N #1 \def_long:Npn #1} \def_new:Npn \def_long:cpn #1{\exp_after:NN \def_long:Npn \cs:w #1\cs_end:} \def_new:Npn \def_long:Npx {\tex_long:D\def:Npx} \def_new:Npn \glet:NN {\tex_global:D \let:NN} \def_new:Npn \glet_new:NN #1{\chk_new_cs:N #1 \tex_global:D\let:NN #1} \def_new:Npn \gdef_new:Npn #1{\chk_new_cs:N #1 \gdef:Npn #1} \def_new:Npn \gdef:cpn {\tex_global:D \def:cpn} \def_new:Npn \gdef:cpx {\tex_global:D \def:cpx} \def_new:Npn \gdef:No {\exp_args:NNo\gdef:Npn} \def_new:Npn \gdef_long:Npn {\tex_long:D\gdef:Npn} \def_new:Npn \gdef_long:Npx {\tex_long:D\gdef:Npx} \def_new:Npn \gfuturelet:NNN{\tex_global:D \let_peek_after:NNN} \def_long_new:Npn \cs_free:NTF #1{\if:w\cs_free_p:N #1 \exp_after:NN \use_choice_i:nn \else: \exp_after:NN \use_choice_ii:nn \fi:} \def_long_new:Npn \cs_free:NT #1{\if:w\cs_free_p:N #1 \exp_after:NN \use:n \else: \exp_after:NN \use_none:n \fi:} \def_long_new:Npn \cs_free:NF #1{\if:w\cs_free_p:N #1 \exp_after:NN \use_none:n \else: \exp_after:NN \use:n \fi:} \def_long_new:Npn \cs_free:cTF #1{ \exp_after:NN \if_meaning:NN \cs:w#1\cs_end: \scan_stop: \exp_after:NN \use_choice_i:nn \else: \exp_after:NN \use_choice_ii:nn \fi:} \def_long_new:Npn \cs_free:cF #1{\exp_after:NN \if_meaning:NN \cs:w#1\cs_end: \scan_stop: \exp_after:NN \use_none:nn \fi: \use:n} \def_long_new:Npn \cs_free:cT #1{\exp_after:NN \if_meaning:NN \cs:w#1\cs_end: \scan_stop: \else: \exp_after:NN \use_none:nn \fi: \use:n} \def_new:Npn \gundefine:N #1{\glet:NN #1\c_undefined} \def_long_new:Npn \use_none:n #1{} \def_long_new:Npn \use_none:nn #1#2{} \def_long_new:Npn \use_none:nnn #1{\use_none:nn} \def_long_new:Npn \use_none:nnnn {\exp_after:NN\use_none:nn \use_none:nn} \def_long_new:Npn \use:n #1{#1} \def_new:Npn \use:c #1{\cs:w #1\cs_end:} \def_new:Npn \use:cc #1#2 {\cs:w #1\exp_after:NN\cs_end:\cs:w #2\cs_end:} \def_long_new:Npn \use_choice_i:nn #1#2{#1} \def_long_new:Npn \use_choice_ii:nn #1#2{#2} \def_long_new:Npn\use_choice_i:nnn#1#2#3{#1} \def_long_new:Npn\use_choice_ii:nnn#1#2#3{#2} \def_long_new:Npn\use_choice_iii:nnn#1#2#3{#3} \def_new:Npn \gtmp:w {} \def_new:Npn \tmp:w {} \def_new:Npn \use_noop: {} \def_new:Npn \cs_to_str:N {\exp_after:NN\use_none:n \token_to_string:N} \def_new:Npn \tlist_eq:nnTF #1#2{ \tlp_gset:Nn \g_testa_tlp {#1} \tlp_gset:Nn \g_testb_tlp {#2} \if_meaning:NN\g_testa_tlp \g_testb_tlp \exp_after:NN\use_choice_i:nn \else: \exp_after:NN\use_choice_ii:nn \fi:} \def_new:Npn \tlist_eq:onTF {\exp_args:No \tlist_eq:nnTF} \def_new:Npn \tlist_empty:nTF #1{\tlp_gset:Nn \g_testa_tlp {#1} \if_meaning:NN\g_testa_tlp \c_empty_tlp \exp_after:NN \use_choice_i:nn \else: \exp_after:NN \use_choice_ii:nn \fi:} \def_new:Npn \tlist_empty:nF #1{\tlp_gset:Nn \g_testa_tlp {#1} \if_meaning:NN\g_testa_tlp \c_empty_tlp \exp_after:NN \use_none:nn \fi: \use:n} \def_new:Npn \str_eq_p:nn #1#2{\str_eq_p_aux:w #1\scan_stop:\\#2\scan_stop:\\} \def_new:Npn \str_eq_p_aux:w #1#2\\#3#4\\{ \if_meaning:NN#1#3 \if_meaning:NN#1\scan_stop:\c_true \else: \if_meaning:NN#3\scan_stop:\c_false \else: \str_eq_p_aux:w #2\\#4\\\fi:\fi: \else:\c_false \fi:} \def:Npn \cs_eq_p:NN #1#2{ \exp_after:NN\exp_after:NN \exp_after:NN\str_eq_p_aux:w \exp_after:NN\token_to_string:N \exp_after:NN#1 \exp_after:NN\scan_stop: \exp_after:NN\\ \token_to_string:N#2\scan_stop:\\} \def_new:Npn\file_not_found:nTF #1#2#3{\IfFileExists{#1}{#3}{#2}} \def_new:Npn \c_true {TT} \def_new:Npn \c_false {TF} %% %% %% End of file `l3basics.sty'.