From 3accf11dd41cac5f2c81b83a2a712c77ffab2b6a Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 24 Jul 2012 16:55:17 +0000 Subject: morewrites (18jul12) git-svn-id: svn://tug.org/texlive/trunk@27138 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/morewrites/primargs.sty | 197 +++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/morewrites/primargs.sty (limited to 'Master/texmf-dist/tex/latex/morewrites/primargs.sty') diff --git a/Master/texmf-dist/tex/latex/morewrites/primargs.sty b/Master/texmf-dist/tex/latex/morewrites/primargs.sty new file mode 100644 index 00000000000..81ed7e6c153 --- /dev/null +++ b/Master/texmf-dist/tex/latex/morewrites/primargs.sty @@ -0,0 +1,197 @@ +%% +%% This is file `primargs.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% primargs.dtx (with options: `package') +%% +%% Communicate any suggestions for changing this package +%% to Bruno Le Floch (blflatex@gmail.com). +%% +%% File: primargs.dtx Copyright (C) 2012 Bruno Le Floch +%% +%% 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 +%% +%% ----------------------------------------------------------------------- +\RequirePackage{l3names} +\ProvidesExplPackage + {primargs}{2012/07/10}{0.1}{Parsing~arguments~of~primitives} +\RequirePackage{expl3} +\cs_new_protected_nopar:Npn \g__primargs_code_tl { } +\cs_new_protected_nopar:Npn \__primargs_no_afterassignment: + { \tex_afterassignment:D \tex_relax:D } +\cs_new_protected_nopar:Npn \__primargs_no_localdefs: + { + \__primargs_no_afterassignment: + \int_compare:nNnF \tex_globaldefs:D > \c_zero + { \tex_globaldefs:D = \c_zero } + } +\cs_new_protected_nopar:Npn \primargs_read_x_token:N + { + \group_begin: + \__primargs_no_localdefs: + \__primargs_read_x_token:N + } +\cs_new_protected_nopar:Npn \__primargs_read_x_token:N + { + \tex_afterassignment:D \__primargs_read_x_token_ii:N + \tex_global:D \tex_futurelet:D \g_primargs_token + } +\cs_new_protected_nopar:Npn \__primargs_read_x_token_ii:N + { + \exp_after:wN + \if_meaning:w \exp_not:N \g_primargs_token \g_primargs_token + \group_end: + \exp_after:wN \use_none:nnn + \fi: + \exp_after:wN \__primargs_read_x_token:N \exp_after:wN + } +\cs_new_protected_nopar:Npn \primargs_read_token:N + { + \group_begin: + \__primargs_no_localdefs: + \tex_afterassignment:D \group_end: + \tex_global:D \tex_futurelet:D \g_primargs_token + } +\cs_new_protected:Npn \primargs_remove_token:N #1 + { + \group_begin: + \__primargs_no_localdefs: + \tex_aftergroup:D #1 + \tex_afterassignment:D \group_end: + \tex_global:D \tex_let:D \g_primargs_token = ~ + } +\cs_new_protected:Npn \primargs_remove_one_optional_space:N #1 + { + \group_begin: + \__primargs_no_localdefs: + \tex_aftergroup:D #1 + \primargs_read_x_token:N \__primargs_remove_one_optional_space: + } +\exp_args:NNo \cs_new_protected_nopar:Npn \__primargs_remove_one_optional_space: + { + \use:n { \if_catcode:w } ~ \exp_not:N \g_primargs_token + \exp_after:wN \primargs_remove_token:N + \fi: + \group_end: + } +\cs_new_protected:Npn \primargs_remove_optional_spaces:N #1 + { + \group_begin: + \__primargs_no_localdefs: + \tex_aftergroup:D #1 + \__primargs_remove_optional_spaces: + } +\cs_new_protected_nopar:Npn \__primargs_remove_optional_spaces: + { \primargs_read_x_token:N \__primargs_remove_optional_spaces_ii: } +\exp_args:NNo \cs_new_protected_nopar:Npn \__primargs_remove_optional_spaces_ii: + { + \use:n { \if_catcode:w } ~ \exp_not:N \g_primargs_token + \exp_after:wN \primargs_remove_token:N + \exp_after:wN \__primargs_remove_optional_spaces: + \else: + \exp_after:wN \group_end: + \fi: + } +\cs_new_protected:Npn \primargs_remove_equals:N #1 + { + \group_begin: + \tex_aftergroup:D #1 + \primargs_remove_optional_spaces:N \__primargs_remove_equals: + } +\cs_new_protected_nopar:Npn \__primargs_remove_equals: + { + \if_meaning:w = \g_primargs_token + \exp_after:wN \__primargs_remove_equals_ii:NN + \fi: + \group_end: + } +\cs_new_protected:Npn \__primargs_remove_equals_ii:NN #1#2 + { \tl_if_eq:nnTF { #2 } { = } { #1 } { #1 #2 } } +\cs_new_protected:Npn \__primargs_get_rhs:NnN #1#2#3 + { + \group_begin: + \__primargs_no_localdefs: + \tex_aftergroup:D #3 + \tl_gset:Nn \g__primargs_code_tl + { + \use:x + { + \exp_not:n { #1 = #2 \group_end: } + { \tex_the:D #1 } + } + } + \tex_afterassignment:D \g__primargs_code_tl + #1 = + } +\cs_generate_variant:Nn \__primargs_get_rhs:NnN { No } +\cs_new_protected_nopar:Npn \primargs_get_number:N + { + \__primargs_get_rhs:NoN \tex_deadcycles:D + { \tex_the:D \tex_deadcycles:D } + } +\cs_new_protected_nopar:Npn \primargs_get_dimen:N + { + \__primargs_get_rhs:NoN \tex_hoffset:D + { \tex_the:D \tex_hoffset:D } + } +\cs_new_protected_nopar:Npn \primargs_get_glue:N + { + \__primargs_get_rhs:NoN \tex_topskip:D + { \tex_the:D \tex_topskip:D } + } +\cs_new_protected_nopar:Npn \primargs_get_mudimen:N + { + \msg_warning:nn { primargs } { get-mudimen } + \primargs_get_muglue:N + } +\cs_new_protected_nopar:Npn \primargs_get_muglue:N + { + \__primargs_get_rhs:NoN \tex_thinmuskip:D + { \tex_the:D \tex_thinmuskip:D } + } +\cs_new_protected_nopar:Npn \primargs_get_general_text:N + { \__primargs_get_rhs:NoN \tex_errhelp:D { { } } } +\tl_new:N \g__primargs_file_name_tl +\cs_new_protected:Npn \primargs_get_file_name:N #1 + { + \group_begin: + \__primargs_no_localdefs: + \tex_aftergroup:D #1 + \tl_gclear:N \g__primargs_file_name_tl + \primargs_remove_optional_spaces:N \__primargs_get_file_name_test: + } +\cs_new_protected_nopar:Npn \__primargs_get_file_name_test: + { + \token_if_cs:NTF \g_primargs_token + { \__primargs_get_file_name_end: } + { + \token_if_eq_charcode:NNTF \c_space_token \g_primargs_token + { \primargs_remove_token:N \__primargs_get_file_name_end: } + { \primargs_remove_token:N \__primargs_get_file_name_char: } + } + } +\cs_new_protected_nopar:Npn \__primargs_get_file_name_end: + { \exp_args:No \group_end: \g__primargs_file_name_tl } +\cs_new_protected_nopar:Npn \__primargs_get_file_name_char: + { + \tl_gput_right:Nx \g__primargs_file_name_tl + { + \exp_after:wN \__primargs_get_file_name_char_ii:w + \token_to_meaning:N \g_primargs_token + \q_stop + } + \primargs_read_x_token:N \__primargs_get_file_name_test: + } +\cs_new:Npn \__primargs_get_file_name_char_ii:w #1 ~ #2 ~ #3 \q_stop + { \__primargs_get_file_name_char_iii:w #3 ~ #3 ~ \q_stop } +\cs_new:Npn \__primargs_get_file_name_char_iii:w #1 ~ #2 ~ #3 \q_stop {#2} +%% +%% +%% End of file `primargs.sty'. -- cgit v1.2.3