diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:55:26 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:55:26 +0000 |
commit | c46a8cff75c54bb399a1879724c1ae8a37b13d66 (patch) | |
tree | 87a7949b16876363f6f43316b0443598fe5d4708 /Master/texmf-dist/tex/latex/expl3/l3basics.sty | |
parent | c13c9fba05d6822e236462817e8c1f95f220988b (diff) |
expl3
git-svn-id: svn://tug.org/texlive/trunk@897 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/expl3/l3basics.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/expl3/l3basics.sty | 216 |
1 files changed, 216 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/expl3/l3basics.sty b/Master/texmf-dist/tex/latex/expl3/l3basics.sty new file mode 100644 index 00000000000..fb4f3de9da0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/expl3/l3basics.sty @@ -0,0 +1,216 @@ +%% +%% 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'. |