diff options
author | Karl Berry <karl@freefriends.org> | 2019-10-23 21:39:58 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-10-23 21:39:58 +0000 |
commit | 90fffe82619f702549289580dd7679442168c3c9 (patch) | |
tree | acac03627c108511ce022ac05ed05fc8e4c24063 /Master/texmf-dist/doc | |
parent | c34500f7d70733c92e29ce064dcdab40a4cc8ed0 (diff) |
scontents (23oct19)
git-svn-id: svn://tug.org/texlive/trunk@52502 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r-- | Master/texmf-dist/doc/latex/scontents/README.md | 23 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/scontents/scontents-code.tex | 766 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/scontents/scontents.pdf | bin | 266405 -> 340870 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/scontents/scontents.tex | 239 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/scontents/t-scontents.mkvi | 194 |
5 files changed, 1217 insertions, 5 deletions
diff --git a/Master/texmf-dist/doc/latex/scontents/README.md b/Master/texmf-dist/doc/latex/scontents/README.md index cc40a942143..73e9648df8d 100644 --- a/Master/texmf-dist/doc/latex/scontents/README.md +++ b/Master/texmf-dist/doc/latex/scontents/README.md @@ -1,6 +1,6 @@ ## scontents — Stores LaTeX contents in memory or files -- Version: 1.4 -- Date: 2019/10/03 +- Version: 1.5 +- Date: 2019-10-24 - Author: Pablo González ## Description @@ -18,9 +18,21 @@ The package loads and depends on updated versions of: ## Installation The package `scontents` is present in `TeXLive` and `MiKTeX`, use the -package manager to install. For a manual installation, put `scontents.dtx` -in your working directory and run `tex scontents.dtx`. - +package manager to install. + +For manual installation, download `scontents.zip` and unzip it, then move +the files to appropriate locations: +``` + scontents.tex -> TDS:tex/generic/scontents/ + scontents-code.tex -> TDS:tex/generic/scontents/ + scontents.sty -> TDS:tex/latex/scontents/ + t-scontents.mkvi -> TDS:tex/context/third/scontents/ + scontents.pdf -> TDS:doc/latex/scontents/ + README.md -> TDS:doc/latex/scontents/ + scontents.dtx -> TDS:source/latex/scontents/ + scontents.ins -> TDS:source/latex/scontents/ +``` +then run `mktexlsr`. ## Examples The file `scontents.pdf` contains attached examples, which can be extracted @@ -34,3 +46,4 @@ conditions of the [LaTeX Project Public License](https://www.latex-project.org/l - README.md (this file) - scontents.pdf (documentation) - scontents.dtx (master file that produced all files) +- scontents.ins (installer to extract all files) diff --git a/Master/texmf-dist/doc/latex/scontents/scontents-code.tex b/Master/texmf-dist/doc/latex/scontents/scontents-code.tex new file mode 100644 index 00000000000..ab8bbdb8a99 --- /dev/null +++ b/Master/texmf-dist/doc/latex/scontents/scontents-code.tex @@ -0,0 +1,766 @@ +%% +%% This is file `scontents-code.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% scontents.dtx (with options: `core') +%% +%% Copyright (C) 2019 by Pablo González L <pablgonz@educarchile.cl> +%% +%% This work may be distributed and/or modified under the conditions of the +%% LaTeX Project Public License, either version 1.3c of this license or (at +%% your option) any later version. The latest version of this license is in +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3c or later is part of all distributions of LaTeX version +%% 2005/12/01 or later. +%% +%% This work is "maintained" (as per the LPPL maintenance status) +%% by Pablo González Luengo. +%% +%% This work consists of the files scontents.dtx and +%% scontents.ins, +%% and the derived files scontents.sty, +%% scontents.tex, +%% t-scontents.mkvi and +%% scontents-code.tex. +%% +\def\ScontentsCoreFileDate{2019-10-24}% +\begingroup + \def\next{\endgroup}% + \expandafter\ifx\csname PackageError\endcsname\relax + \begingroup + \def\next{\endgroup\endgroup}% + \def\PackageError#1#2#3% + {% + \endgroup + \errhelp{#3}% + \errmessage{#1 Error: #2!}% + }% + \fi + \expandafter\ifx\csname ScontentsFileDate\endcsname\relax + \def\next + {% + \PackageError{scontents}{No scontents loader detected} + {% + You have attempted to use the scontents code directly rather than using + the correct loader. Loading of scontents will abort. + }% + \endgroup + \endinput + } + \else + \ifx\ScontentsFileDate\ScontentsCoreFileDate + \else + \def\next + {% + \PackageError{scontents}{Mismatched~scontents~files~detected} + {% + You~have~attempted~to~load~scontents~with~mismatched~files:~ + probably~you~have~one~or~more~files~'locally~installed'~which~ + are~in~conflict.~Loading~of~scontents~will~abort. + }% + \endgroup + \endinput + }% + \fi +\fi +\next +\keys_define:nn { scontents } + { + store-env .tl_set:N = \l__scontents_name_seq_env_tl, + store-env .initial:n = contents, + store-env .value_required:n = true, + store-cmd .tl_set:N = \l__scontents_name_seq_cmd_tl, + store-cmd .initial:n = contents, + store-cmd .value_required:n = true, + verb-font .tl_set:N = \l__scontents_verb_font_tl, + verb-font .value_required:n = true, + print-env .bool_set:N = \l__scontents_print_env_bool, + print-env .initial:n = false, + print-env .default:n = true, + print-cmd .bool_set:N = \l__scontents_print_cmd_bool, + print-cmd .initial:n = false, + print-cmd .default:n = true, + force-eol .bool_set:N = \l__scontents_forced_eol_bool, + force-eol .initial:n = false, + force-eol .default:n = true, + width-tab .int_set:N = \l__scontents_tab_width_int, + width-tab .initial:n = 1, + width-tab .value_required:n = true, + print-all .meta:n = { print-env = #1 , print-cmd = #1 }, + print-all .default:n = true, + store-all .meta:n = { store-env = #1 , store-cmd = #1 }, + store-all .value_required:n = true + } +\tl_new:N \l__scontents_macro_tmp_tl +\tl_new:N \l__scontents_fname_out_tl +\tl_new:N \l__scontents_temp_tl +\tl_new:N \l__scontents_file_tl +\tl_new:N \g__scontents_temp_tl +\tl_new:N \l__scontents_foreach_name_seq_tl +\tl_new:N \l__scontents_foreach_before_tl +\tl_new:N \l__scontents_foreach_after_tl +\int_new:N \l__scontents_foreach_stop_int +\int_new:N \l__scontents_seq_item_int +\int_new:N \l__scontents_env_nesting_int +\int_new:N \l__scontents_tmpa_int +\bool_new:N \l__scontents_writing_bool +\bool_set_false:N \l__scontents_writing_bool +\bool_new:N \l__scontents_storing_bool +\bool_set_true:N \l__scontents_storing_bool +\bool_new:N \l__scontents_foreach_before_bool +\bool_set_false:N \l__scontents_foreach_before_bool +\bool_new:N \l__scontents_foreach_after_bool +\bool_set_false:N \l__scontents_foreach_after_bool +\bool_new:N \l__scontents_foreach_stop_bool +\bool_set_false:N \l__scontents_foreach_stop_bool +\bool_new:N \l__scontents_foreach_wrapper_bool +\bool_set_false:N \l__scontents_foreach_wrapper_bool +\seq_new:N \l__scontents_foreach_print_seq +\str_const:Nx \c__scontents_hidden_space_str + { \c_percent_str \c_circumflex_str \c_circumflex_str A scheol \c_percent_str } +\quark_new:N \q__scontents_stop +\quark_new:N \q__scontents_mark +\iow_new:N \l__scontents_file_iow +\cs_new_protected:Npn \__scontents_rescan_tokens:n #1 { \tex_scantokens:D {#1} } +\cs_generate_variant:Nn \__scontents_rescan_tokens:n { V, x } +\cs_new:Npx \__scontents_tab: { \c_space_tl } +\cs_new:Npn \__scontents_par: { ^^J ^^J } +\cs_generate_variant:Nn \tl_remove_once:Nn { NV } +\cs_generate_variant:Nn \tl_replace_all:Nnn { Nx, Nxx, Nnx } +\cs_generate_variant:Nn \msg_error:nnnn { nnx } +\prg_generate_conditional_variant:Nnn \tl_if_empty:n { f } { TF } +\keys_define:nn { scontents / scontents } + { + write-env .code:n = { + \bool_set_true:N \l__scontents_writing_bool + \tl_set:Nn \l__scontents_fname_out_tl {#1} + }, + write-out .code:n = { + \bool_set_false:N \l__scontents_storing_bool + \bool_set_true:N \l__scontents_writing_bool + \tl_set:Nn \l__scontents_fname_out_tl {#1} + }, + write-env .value_required:n = true, + write-out .value_required:n = true, + print-env .meta:nn = { scontents } { print-env = #1 }, + print-env .default:n = true, + store-env .meta:nn = { scontents } { store-env = #1 }, + force-eol .meta:nn = { scontents } { force-eol = #1 }, + force-eol .default:n = true, + unknown .code:n = { \__scontents_parse_environment_keys:n {#1} } + } +\keys_define:nn { scontents / Scontents } + { + print-cmd .meta:nn = { scontents } { print-cmd = #1 }, + print-cmd .default:n = true, + store-cmd .meta:nn = { scontents } { store-cmd = #1 }, + force-eol .meta:nn = { scontents } { force-eol = #1 }, + force-eol .default:n = true, + unknown .code:n = { \__scontents_parse_command_keys:n {#1} } + } +\keys_define:nn { scontents / foreachsc } + { + before .code:n = { + \bool_set_true:N \l__scontents_foreach_before_bool + \tl_set:Nn \l__scontents_foreach_before_tl {#1} + }, + before .value_required:n = true, + after .code:n = { + \bool_set_true:N \l__scontents_foreach_after_bool + \tl_set:Nn \l__scontents_foreach_after_tl {#1} + }, + after .value_required:n = true, + start .int_set:N = \l__scontents_foreach_start_int, + start .value_required:n = true, + start .initial:n = 1, + stop .code:n = { + \bool_set_true:N \l__scontents_foreach_stop_bool + \int_set:Nn \l__scontents_foreach_stop_int {#1} + }, + stop .value_required:n = true, + step .int_set:N = \l__scontents_foreach_step_int, + step .value_required:n = true, + step .initial:n = 1, + wrapper .code:n = { + \bool_set_true:N \l__scontents_foreach_wrapper_bool + \cs_set_protected:Npn \__scontents_foreach_wrapper:n ##1 {#1} + }, + wrapper .value_required:n = true, + sep .tl_set:N = \l__scontents_foreach_sep_tl, + sep .initial:n = {}, + sep .value_required:n = true, + unknown .code:n = { \__scontents_parse_foreach_keys:n {#1} } + } +\keys_define:nn { scontents / typemeaning } + { + width-tab .meta:nn = { scontents } { width-tab = #1 }, + unknown .code:n = { \__scontents_parse_type_meaning_key:n {#1} } + } +\cs_new_protected:Npn \__scontents_parse_environment_keys:n #1 + { \exp_args:NV \__scontents_parse_environment_keys:nn \l_keys_key_tl {#1} } +\cs_new_protected:Npn \__scontents_parse_environment_keys:nn #1#2 + { + \tl_if_blank:nTF {#2} + { \msg_error:nnn { scontents } { env-key-unknown } {#1} } + { \msg_error:nnnn { scontents } { env-key-value-unknown } {#1} {#2} } + } +\cs_new_protected:Npn \__scontents_parse_command_keys:n #1 + { \exp_args:NV \__scontents_parse_command_keys:nn \l_keys_key_tl {#1} } +\cs_new_protected:Npn \__scontents_parse_command_keys:nn #1#2 + { + \tl_if_blank:nTF {#2} + { \msg_error:nnn { scontents } { cmd-key-unknown } {#1} } + { \msg_error:nnnn { scontents } { cmd-key-value-unknown } {#1} {#2} } + } +\cs_new_protected:Npn \__scontents_parse_foreach_keys:nn #1#2 + { + \tl_if_blank:nTF {#2} + { \msg_error:nnn { scontents } { for-key-unknown } {#1} } + { \msg_error:nnnn { scontents } { for-key-value-unknown } {#1} {#2} } + } +\cs_new_protected:Npn \__scontents_parse_foreach_keys:n #1 + { \exp_args:NV \__scontents_parse_foreach_keys:nn \l_keys_key_tl {#1} } +\cs_new_protected:Npn \__scontents_parse_type_meaning_key:n #1 + { \exp_args:NV \__scontents_parse_type_meaning_key:nn \l_keys_key_tl {#1} } +\cs_new_protected:Npn \__scontents_parse_type_meaning_key:nn #1#2 + { + \tl_if_empty:fTF { \int_to_roman:n { -0 #1 } } + { + \tl_if_blank:nTF {#2} + { \int_set:Nn \l__scontents_seq_item_int {#1} } + { \msg_error:nnnn { scontents } { type-key-value-unknown } {#1} {#2} } + } + { + \tl_if_blank:nTF {#2} + { \msg_error:nnn { scontents } { type-key-unknown } {#1} } + { \msg_error:nnnn { scontents } { type-key-value-unknown } {#1} {#2} } + } + } +\cs_new_protected:Npn \__scontents_append_contents:nn #1#2 + { + \tl_if_blank:nT {#1} + { \msg_error:nn { scontents } { empty-store-cmd } } + \seq_if_exist:cF { g__scontents_name_#1_seq } + { \seq_new:c { g__scontents_name_#1_seq } } + \seq_gput_right:cn { g__scontents_name_#1_seq } {#2} + } +\cs_generate_variant:Nn \__scontents_append_contents:nn { Vx } +\cs_new:Npn \__scontents_getfrom_seq:nn #1#2 + { + \seq_if_exist:cTF { g__scontents_name_#2_seq } + { + \exp_args:Nf \__scontents_getfrom_seq:nnn + { \seq_count:c { g__scontents_name_#2_seq } } + {#1} {#2} + } + { \msg_expandable_error:nnn { scontents } { undefined-storage } {#2} } + } +\cs_new:Npn \__scontents_getfrom_seq:nnn #1#2#3 + { + \bool_lazy_or:nnTF + { \int_compare_p:nNn {#2} = { 0 } } + { \int_compare_p:nNn { \int_abs:n {#2} } > {#1} } + { \msg_expandable_error:nnnnn { scontents } { index-out-of-range } {#2} {#3} {#1} } + { \seq_item:cn { g__scontents_name_#3_seq } {#2} } + } +\cs_new_protected:Npn \__scontents_lastfrom_seq:n #1 + { + \tl_gset:Nx \g__scontents_temp_tl { \seq_item:cn { g__scontents_name_#1_seq } {-1} } + \group_insert_after:N \__scontents_rescan_tokens:V + \group_insert_after:N \g__scontents_temp_tl + \group_insert_after:N \tl_gclear:N + \group_insert_after:N \g__scontents_temp_tl + } +\cs_new_protected:Npn \__scontents_store_to_seq:NN #1#2 + { + \tl_log:N #1 + \__scontents_append_contents:Vx #2 { \exp_not:V #1 } + } +\cs_new_protected:Npn \__scontents_scontents_env_begin: + { + \char_set_catcode_active:N \^^M + \__scontents_start_environment:w + } +\cs_new_protected:Npn \__scontents_scontents_env_end: + { + \__scontents_stop_environment: + \__scontents_atend_environment: + } +\cs_new_protected:Npn \__scontents_grab_optional:n #1 + { + \tl_if_novalue:nF {#1} + { + \tl_set:Nn \l__scontents_temp_tl {#1} + \__scontents_normalise_line_ends:N \l__scontents_temp_tl + \keys_set:nV { scontents / scontents } \l__scontents_temp_tl + } + \__scontents_start_after_option:w + } +\group_begin: + \char_set_catcode_active:N \^^I + \char_set_catcode_active:N \^^L + \char_set_catcode_active:N \^^M + \cs_new_protected:Npn \__scontents_normalise_line_ends:N #1 + { \tl_replace_all:Nnn #1 { ^^M } { ~ } } + \cs_new_protected:Npn \__scontents_start_environment:w #1 ^^M + { + \tl_if_head_is_N_type:nTF {#1} + { + \str_if_eq:eeTF { \tl_head:n {#1} } { [ } + { \__scontents_grab_optional:w #1 ^^M } + { \__scontents_check_line_and_process:xn { } {#1} } + } + { \__scontents_check_line_and_process:xn { } {#1} } + } + \cs_new_protected:Npn \__scontents_start_after_option:w #1 ^^M + { \__scontents_check_line_and_process:xn { [...] } {#1} } + \cs_new_protected:Npn \__scontents_check_line_and_process:xn #1 #2 + { + \tl_if_blank:nF {#2} + { + \msg_error:nnxn { scontents } { junk-after-begin } + { after~\c_backslash_str begin{scontents} #1 } {#2} + } + \__scontents_make_control_chars_active: + \group_begin: + \__scontents_file_tl_write_start:V \l__scontents_fname_out_tl + } + \cs_new_protected:Npn \__scontents_stop_environment: + { + \__scontents_file_write_stop:N \l__scontents_macro_tmp_tl + \exp_args:NNNV + \group_end: + \tl_set:Nn \l__scontents_macro_tmp_tl \l__scontents_macro_tmp_tl + \tl_if_empty:NT \l__scontents_macro_tmp_tl + { \msg_warning:nnn { scontents } { empty-environment } } + } + \cs_new_protected:Npn \__scontents_file_tl_write_start:n #1 + { + \group_begin: + \bool_if:NT \l__scontents_writing_bool + { + \file_if_exist:nTF {#1} + { \msg_warning:nnx { scontents } { rewriting-file } {#1} } + { \msg_warning:nnx { scontents } { writing-file } {#1} } + \iow_open:Nn \l__scontents_file_iow {#1} + } + \tl_clear:N \l__scontents_file_tl + \seq_map_function:NN \l_char_special_seq \char_set_catcode_other:N + \int_step_function:nnN { 128 } { 255 } \char_set_catcode_letter:n + \cs_set_protected:Npx \__scontents_ret:w ##1 ^^M + { + \exp_not:N \__scontents_verb_processor_iterate:w + ##1 \c__scontents_end_env_tl + \c__scontents_end_env_tl + \exp_not:N \q__scontents_stop + } + \__scontents_make_control_chars_active: + \__scontents_ret:w + } + \use:x + { + \cs_new:Npn \exp_not:N \__scontents_verb_processor_iterate:w + ##1 \c__scontents_end_env_tl + ##2 \c__scontents_end_env_tl + ##3 \exp_not:N \q__scontents_stop + } { + \tl_if_blank:nTF {#3} + { + \__scontents_analyse_nesting:n {#1} + \__scontents_verb_processor_output:n {#1} + } + { + \__scontents_if_nested:TF + { + \__scontents_nesting_decr: + \__scontents_verb_processor_output:x + { \exp_not:n {#1} \c__scontents_end_env_tl \exp_not:n {#2} } + } + { + \tl_if_blank:nF {#1} + { \__scontents_verb_processor_output:n {#1} } + \cs_set_protected:Npx \__scontents_ret:w + { + \__scontents_format_case:nnn + { \exp_not:N \end{scontents} } % LaTeX + { \endscontents } % Plain/Generic + { \stopscontents } % ConTeXt + \bool_lazy_or:nnF + { \tl_if_blank_p:n {#2} } + { \str_if_eq_p:ee {#2} { \c_percent_str } } + { + \msg_warning:nnn { scontents } { rescanning-text } {#2} + \__scontents_rescan_tokens:n {#2} + } + } + \char_set_active_eq:NN ^^M \__scontents_ret:w + } + } + ^^M + } + \cs_new_protected:Npn \__scontents_file_write_stop:N #1 + { + \bool_if:NT \l__scontents_writing_bool + { \iow_close:N \l__scontents_file_iow } + \use:x + { + \group_end: + \bool_if:NT \l__scontents_storing_bool + { + \tl_set:Nn \exp_not:N #1 + { \exp_args:NV \__scontents_remove_leading_nl:n \l__scontents_file_tl } + } + } + } + \cs_new:Npn \__scontents_remove_leading_nl:n #1 + { + \tl_if_head_is_N_type:nTF {#1} + { + \exp_args:Nf + \__scontents_remove_leading_nl:nn + { \tl_head:n {#1} } {#1} + } + { \exp_not:n {#1} } + } + \cs_new:Npn \__scontents_remove_leading_nl:nn #1 #2 + { + \token_if_eq_meaning:NNTF ^^J #1 + { \exp_not:o { \__scontents_remove_leading_nl:w #2 } } + { \exp_not:n {#2} } + } + \cs_new:Npn \__scontents_remove_leading_nl:w ^^J { } + \cs_new_protected:Npn \__scontents_verb_processor_output:n #1 + { + \bool_if:NT \l__scontents_writing_bool + { \iow_now:Nn \l__scontents_file_iow {#1} } + \bool_if:NT \l__scontents_storing_bool + { \tl_put_right:Nn \l__scontents_file_tl { ^^J #1 } } + } + \cs_generate_variant:Nn \__scontents_verb_processor_output:n { x } + \cs_new_protected:Npx \__scontents_analyse_nesting:n #1 + { + \int_zero:N \l__scontents_tmpa_int + \exp_not:N \__scontents_analyse_nesting:w #1 + \c_backslash_str begin + \c_left_brace_str \exp_not:N \q__scontents_mark \c_right_brace_str + \exp_not:N \q__scontents_stop + \int_compare:nNnT { \l__scontents_tmpa_int } > { 1 } + { \msg_warning:nn { scontents } { multiple-begin } } + } + \use:x + { + \cs_new_protected:Npn \exp_not:N \__scontents_analyse_nesting:w ##1 + \c_backslash_str begin \c_left_brace_str ##2 \c_right_brace_str + } { + \if_meaning:w \q__scontents_mark #2 + \exp_after:wN \use_i:nn + \else: + \exp_after:wN \use_ii:nn + \fi: + { \__scontents_use_none_delimit_by_q_stop:w } + { + \str_if_eq:eeT {#2} {scontents} + { + \int_incr:N \l__scontents_env_nesting_int + \int_incr:N \l__scontents_tmpa_int + \__scontents_analyse_nesting:w + } + \__scontents_analyse_nesting:w + } + } + \cs_new_protected:Npn \__scontents_nesting_decr: + { \int_decr:N \l__scontents_env_nesting_int } + \prg_new_protected_conditional:Npnn \__scontents_if_nested: { TF } + { + \int_compare:nNnTF { \l__scontents_env_nesting_int } > { \c_zero_int } + { \prg_return_true: } + { \prg_return_false: } + } + \cs_new:Npn \__scontents_use_none_delimit_by_q_stop:w #1 \q__scontents_stop { } +\group_end: +\cs_generate_variant:Nn \__scontents_file_tl_write_start:n { V } +\cs_new_protected:Npn \__scontents_atend_environment: + { + \bool_if:NT \l__scontents_storing_bool + { + \bool_if:NF \l__scontents_forced_eol_bool + { \tl_put_right:Nx \l__scontents_macro_tmp_tl { \c__scontents_hidden_space_str } } + \__scontents_store_to_seq:NN \l__scontents_macro_tmp_tl \l__scontents_name_seq_env_tl + \bool_if:NT \l__scontents_print_env_bool + { \__scontents_lastfrom_seq:n \l__scontents_name_seq_env_tl } + } + } +\cs_if_exist:NF \dospecials + { + \cs_new:Npn \dospecials + { \seq_map_function:NN \l_char_special_seq \do } + } +\cs_new_protected:Npn \__scontents_Scontents_internal:nn #1 #2 + { + \group_begin: + \tl_if_novalue:nF {#2} + { \keys_set:nn { scontents / Scontents } {#2} } + \char_set_catcode_active:n { 9 } + \bool_if:NTF #1 + { \__scontents_verb_arg:w } + { \__scontents_norm_arg:n } + } +\cs_new_protected:Npn \__scontents_norm_arg:n #1 + { + \tl_set:Nx \l__scontents_temp_tl { \exp_not:n {#1} } + \tl_put_right:Nx \l__scontents_temp_tl { \c__scontents_hidden_space_str } + \__scontents_store_to_seq:NN \l__scontents_temp_tl \l__scontents_name_seq_cmd_tl + \bool_if:NT \l__scontents_print_cmd_bool + { \__scontents_lastfrom_seq:n \l__scontents_name_seq_cmd_tl } + \group_end: + } +\cs_new_protected:Npn \__scontents_verb_arg_internal:n #1 + { + \tl_set:Nx \l__scontents_temp_tl { \exp_not:n {#1} } + \tl_replace_all:Nxx \l__scontents_temp_tl { \iow_char:N \^^M } { \iow_char:N \^^J } + \bool_if:NF \l__scontents_forced_eol_bool + { \tl_put_right:Nx \l__scontents_temp_tl { \c__scontents_hidden_space_str } } + \__scontents_store_to_seq:NN \l__scontents_temp_tl \l__scontents_name_seq_cmd_tl + \bool_if:NT \l__scontents_print_cmd_bool + { \__scontents_lastfrom_seq:n \l__scontents_name_seq_cmd_tl } + \group_end: + } +\cs_new_protected:Npn \__scontents_getstored_internal:nn #1 #2 + { + \group_begin: + \int_set:Nn \tex_newlinechar:D { `\^^J } + \__scontents_rescan_tokens:x + { \__scontents_getfrom_seq:nn {#1} {#2} } + \group_end: + } +\cs_new_protected:Npn \__scontents_foreachsc_internal:nn #1 #2 + { + \group_begin: + \tl_if_novalue:nF {#1} { \keys_set:nn { scontents / foreachsc } {#1} } + \tl_set:Nn \l__scontents_foreach_name_seq_tl {#2} + \seq_clear:N \l__scontents_foreach_print_seq + \bool_if:NF \l__scontents_foreach_stop_bool + { + \int_set:Nn \l__scontents_foreach_stop_int + { \seq_count:c { g__scontents_name_#2_seq } } + } + \int_step_function:nnnN + { \l__scontents_foreach_start_int } + { \l__scontents_foreach_step_int } + { \l__scontents_foreach_stop_int } + \__scontents_foreach_add_body:n + \seq_use:Nn \l__scontents_foreach_print_seq { \tl_use:N \l__scontents_foreach_sep_tl } + \group_end: + } +\cs_new_protected:Npn \__scontents_foreach_add_body:n #1 + { + \seq_put_right:Nx \l__scontents_foreach_print_seq + { + \bool_if:NT \l__scontents_foreach_before_bool + { \exp_not:V \l__scontents_foreach_before_tl } + \bool_if:NTF \l__scontents_foreach_wrapper_bool + { \__scontents_foreach_wrapper:n } + { \use:n } + { \getstored [#1] { \tl_use:N \l__scontents_foreach_name_seq_tl } } + \bool_if:NT \l__scontents_foreach_after_bool + { \exp_not:V \l__scontents_foreach_after_tl } + } + } +\cs_new_protected:Npn \__scontents_typestored_internal:nn #1 #2 + { + \group_begin: + \int_set:Nn \l__scontents_seq_item_int { 1 } + \tl_if_novalue:nF {#1} { \keys_set:nn { scontents / typemeaning } {#1} } + \tl_set:Nx \l__scontents_temp_tl + { \exp_args:NV \__scontents_getfrom_seq:nn \l__scontents_seq_item_int {#2} } + \tl_remove_once:NV \l__scontents_temp_tl \c__scontents_hidden_space_str + \tl_log:N \l__scontents_temp_tl + \tl_if_empty:NF \l__scontents_temp_tl + { \__scontents_verb_print:N \l__scontents_temp_tl } + \group_end: + } +\group_begin: + \char_set_catcode_active:N \^^M + \cs_new_protected:Npn \__scontents_verb_print:N #1 + { + \tl_if_blank:VT #1 + { \msg_error:nnn { scontents } { empty-variable } {#1} } + \cs_set_eq:NN \__scontents_verb_print_EOL: ^^M + \cs_set_eq:NN ^^M \scan_stop: + \cs_set_eq:cN { do@noligs } \__scontents_do_noligs:N + \int_set:Nn \tex_newlinechar:D { `\^^J } + \__scontents_rescan_tokens:x + { + \__scontents_format_case:nnn + { \exp_not:N \begin{verbatimsc} } % LaTeX + { \verbatimsc } % Plain/Generic + { \startverbatimsc } % ConTeXt + ^^M + \exp_not:V #1 ^^M + \g__scontents_end_verbatimsc_tl + } + \cs_set_eq:NN ^^M \__scontents_verb_print_EOL: + } +\group_end: +\cs_new_protected:Npn \__scontents_xverb: + { + \char_set_catcode_active:n { 9 } + \char_set_active_eq:nN { 9 } \__scontents_tabs_to_spaces: + \__scontents_xverb:w + } +\cs_new:Npn \__scontents_tabs_to_spaces: + { \prg_replicate:nn { \l__scontents_tab_width_int } { ~ } } +\cs_new:Npn \__scontents_do_noligs:N #1 + { + \char_set_catcode_active:N #1 + \char_set_active_eq:Nc #1 { __scontents_active_char_ \token_to_str:N #1 : } + \cs_set:cpx { __scontents_active_char_ \token_to_str:N #1 : } + { + \mode_leave_vertical: + \tex_kern:D \c_zero_dim + \char_generate:nn { `#1 } { 12 } + } + } +\cs_new_protected:Npn \__scontents_set_active_eq:NN #1 + { + \char_set_catcode_active:N #1 + \char_set_active_eq:NN #1 + } +\group_begin: + \char_set_catcode_active:N \* + \cs_new_protected:Npn \__scontents_make_control_chars_active: + { + \__scontents_plain_disable_outer_par: + \__scontents_set_active_eq:NN \^^I \__scontents_tab: + \__scontents_set_active_eq:NN \^^L \__scontents_par: + \__scontents_set_active_eq:NN \^^M \__scontents_ret:w + } +\group_end: +\cs_new_protected:Npn \__scontents_meaningsc_internal:nn #1 #2 + { + \group_begin: + \int_set:Nn \l__scontents_seq_item_int { 1 } + \tl_if_novalue:nF {#1} { \keys_set:nn { scontents / typemeaning } {#1} } + \__scontents_meaningsc:n {#2} + \group_end: + } +\group_begin: + \char_set_catcode_active:N \^^I + \cs_new_protected:Npn \__scontents_meaningsc:n #1 + { + \tl_set:Nx \l__scontents_temp_tl + { \exp_args:NV \__scontents_getfrom_seq:nn \l__scontents_seq_item_int {#1} } + \tl_replace_all:Nxn \l__scontents_temp_tl { \iow_char:N \^^J } { ~ } + \tl_remove_once:NV \l__scontents_temp_tl \c__scontents_hidden_space_str + \tl_log:N \l__scontents_temp_tl + \tl_use:N \l__scontents_verb_font_tl + \tl_replace_all:Nnx \l__scontents_temp_tl { ^^I } { \__scontents_tabs_to_spaces: } + \cs_replacement_spec:N \l__scontents_temp_tl + } +\group_end: +\msg_new:nnn { scontents } { junk-after-begin } + { + Junk~characters~#1~\msg_line_context: : + \\ \\ + #2 + } +\msg_new:nnn { scontents } { empty-stored-content } + { Empty~value~for~key~'getstored'~\msg_line_context:. } +\msg_new:nnn { scontents } { empty-variable } + { Variable~'#1'~empty~\msg_line_context:. } +\msg_new:nnn { scontents } { rewriting-file } + { Overwriting ~ file ~ '#1' } +\msg_new:nnn { scontents } { writing-file } + { Writing ~ file ~ '#1' } +\msg_new:nnn { scontents } { rescanning-text } + { Rescanning~text~'#1'~after~\c_backslash_str end{scontents}~\msg_line_context:.} +\msg_new:nnn { scontents } { multiple-begin } + { Multiple~\c_backslash_str begin{scontents}~\msg_line_context:.} +\msg_new:nnn { scontents } { undefined-storage } + { Storage~named~'#1'~is~not~defined. } +\msg_new:nnn { scontents } { index-out-of-range } + { + \int_compare:nNnTF {#1} = { 0 } + { Index~of~sequence~cannot~be~zero. } + { + Index~'#1'~out~of~range~for~'#2'.~ + \int_compare:nNnTF {#1} > { 0 } + { Max = } { Min = -} #3. + } + } +\msg_new:nnnn { scontents } { env-key-unknown } + { The~key~'#1'~is~unknown~by~environment~'scontents'~and~is~being~ignored.} + { + The~environment~'scontents'~does~not~have~a~key~called~'#1'.\\ + Check~that~you~have~spelled~the~key~name~correctly. + } +\msg_new:nnnn { scontents } { env-key-value-unknown } + { The~key~'#1=#2'~is~unknown~by~environment~'scontents'~and~is~being~ignored. } + { + The~environment~'scontents'~does~not~have~a~key~called~'#1'.\\ + Check~that~you~have~spelled~the~key~name~correctly. + } +\msg_new:nnnn { scontents } { cmd-key-unknown } + { The~key~'#1'~is~unknown~by~'\c_backslash_str Scontents'~and~is~being~ignored.} + { + The~command~'\c_backslash_str Scontents'~does~not~have~a~key~called~'#1'.\\ + Check~that~you~have~spelled~the~key~name~correctly. + } +\msg_new:nnnn { scontents } { cmd-key-value-unknown } + { The~key~'#1=#2'~is~unknown~by~'\c_backslash_str Scontents'~and~is~being~ignored. } + { + The~command~'\c_backslash_str Scontents'~does~not~have~a~key~called~'#1'.\\ + Check~that~you~have~spelled~the~key~name~correctly. + } +\msg_new:nnnn { scontents } { for-key-unknown } + { The~key~'#1'~is~unknown~by~'\c_backslash_str foreachsc'~and~is~being~ignored.} + { + The~command~'\c_backslash_str foreachsc'~does~not~have~a~key~called~'#1'.\\ + Check~that~you~have~spelled~the~key~name~correctly. + } +\msg_new:nnnn { scontents } { for-key-value-unknown } + { The~key~'#1=#2'~is~unknown~by~'\c_backslash_str foreachsc'~and~is~being~ignored. } + { + The~command~'\c_backslash_str foreachsc'~does~not~have~a~key~called~'#1'.\\ + Check~that~you~have~spelled~the~key~name~correctly. + } +\msg_new:nnnn { scontents } { type-key-unknown } + { The~key~'#1'~is~unknown~and~is~being~ignored. } + { + This~command~does~not~have~a~key~called~'#1'.\\ + This~command~only~accepts~the~key~'width-tab'. + } +\msg_new:nnnn { scontents } { type-key-value-unknown } + { The~key~'#1'~to~which~you~passed~'#2'~is~unknown~and~is~being~ignored. } + { + This~command~does~not~have~a~key~called~'#1'.\\ + This~command~only~accepts~the~key~'width-tab'. + } +\msg_new:nnn { scontents } { empty-environment } + { scontents~environment~empty~\msg_line_context:. } +\msg_new:nnnn { scontents } { verbatim-newline } + { Verbatim~argument~of~#1~ended~by~end~of~line. } + { + The~verbatim~argument~of~the~#1~cannot~contain~more~than~one~line,~ + but~the~end~ + of~the~current~line~has~been~reached.~You~may~have~forgotten~the~ + closing~delimiter. + \\ \\ + LaTeX~will~ignore~'#2'. + } +\msg_new:nnnn { scontents } { verbatim-tokenized } + { The~verbatim~#1~cannot~be~used~inside~an~argument. } + { + The~#1~takes~a~verbatim~argument.~ + It~may~not~appear~within~the~argument~of~another~function.~ + It~received~an~illegal~token \tl_if_empty:nF {#3} { ~'#3' } . + \\ \\ + LaTeX~will~ignore~'#2'. + } +\endinput +%% +%% End of file `scontents-code.tex'. diff --git a/Master/texmf-dist/doc/latex/scontents/scontents.pdf b/Master/texmf-dist/doc/latex/scontents/scontents.pdf Binary files differindex 8e48969cc48..ee0ed05e8d9 100644 --- a/Master/texmf-dist/doc/latex/scontents/scontents.pdf +++ b/Master/texmf-dist/doc/latex/scontents/scontents.pdf diff --git a/Master/texmf-dist/doc/latex/scontents/scontents.tex b/Master/texmf-dist/doc/latex/scontents/scontents.tex new file mode 100644 index 00000000000..35fc8e406ec --- /dev/null +++ b/Master/texmf-dist/doc/latex/scontents/scontents.tex @@ -0,0 +1,239 @@ +%% +%% This is file `scontents.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% scontents.dtx (with options: `loader,plain') +%% +%% Copyright (C) 2019 by Pablo González L <pablgonz@educarchile.cl> +%% +%% This work may be distributed and/or modified under the conditions of the +%% LaTeX Project Public License, either version 1.3c of this license or (at +%% your option) any later version. The latest version of this license is in +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3c or later is part of all distributions of LaTeX version +%% 2005/12/01 or later. +%% +%% This work is "maintained" (as per the LPPL maintenance status) +%% by Pablo González Luengo. +%% +%% This work consists of the files scontents.dtx and +%% scontents.ins, +%% and the derived files scontents.sty, +%% scontents.tex, +%% t-scontents.mkvi and +%% scontents-code.tex. +%% +\def\ScontentsFileDate{2019-10-24}% +\def\ScontentsFileVersion{1.5}% +\def\ScontentsFileDescription{Stores LaTeX contents in memory or files}% +\input expl3-generic.tex +\ExplSyntaxOn +\tl_gset:cx { ver @ scontents . sty } { \ScontentsFileDate\space + v\ScontentsFileVersion\space \ScontentsFileDescription } +\iow_log:x { Package: ~ scontents ~ \use:c { ver @ scontents . sty } } +\msg_gset:nnn { scontents } { already-loaded } + { The~`scontents'~package~is~already~loaded.~Aborting~input~\msg_line_context:. } +\cs_if_exist:NT \__scontents_rescan_tokens:n + { + \msg_warning:nn { scontents } { already-loaded } + \ExplSyntaxOff + \file_input_stop: + } +\tl_new:N \g__scontents_end_verbatimsc_tl +\tl_gset_rescan:Nnn + \g__scontents_end_verbatimsc_tl + { + \char_set_catcode_other:N \\ + } + { \endverbatimsc } +\tl_const:Nx \c__scontents_end_env_tl + { + \c_backslash_str + end + scontents + } +\file_input:n { scontents-code.tex } +\cs_new:Npn \__scontents_format_case:nnn #1 #2 #3 + {#2} % Plain/Generic +\keys_define:nn { scontents } + { verb-font .initial:n = \tt } +\seq_new:N \l__scontents_compat_seq +\cs_new_protected:Npn \__scontents_compat_redefine:Npn #1 + { + \seq_put_right:Nn \l__scontents_compat_seq {#1} + \cs_set_eq:cN { __scontents_saved_\cs_to_str:N #1: } #1 + \cs_new_protected:Npn #1 + } +\cs_new_protected:Npn \__scontents_compat_restore: + { \seq_map_function:NN \l__scontents_compat_seq \__scontents_compat_restore:N } +\cs_new_protected:Npn \__scontents_compat_restore:N #1 + { + \cs_set_eq:Nc #1 { __scontents_saved_\cs_to_str:N #1: } + \cs_undefine:c { __scontents_saved_\cs_to_str:N #1: } + } +\cs_generate_variant:Nn \__scontents_compat_redefine:Npn { c } +\cs_new_protected:Npn \__scontents_optarg:nn #1 #2 + { \peek_charcode_ignore_spaces:NTF [ {#1} {#1[#2]} } +\cs_new_protected:Npn \__scontents_stararg:nn #1 #2 + { \peek_charcode_remove_ignore_spaces:NTF * {#1} {#2} } +\__scontents_compat_redefine:Npn \RequirePackage + { \__scontents_optarg:nn { \__scontents_require_auxi:wn } { } } +\cs_new_protected:Npn \__scontents_require_auxi:wn [#1] #2 + { \__scontents_optarg:nn { \__scontents_require_auxii:wnw [{#1}]{#2} } { } } +\cs_new:Npn \__scontents_zap_space:ww #1~#2 + { + #1 \if_meaning:w #2 \q_mark + \exp_after:wN \use_none:n + \else: + \exp_after:wN \__scontents_zap_space:ww + \fi: #2 + } +\cs_new_protected:Npn \__scontents_require_auxii:wnw [#1] #2 [#3] + { + \tl_set:Nx \l__scontents_temp_tl { \__scontents_zap_space:ww #2 ~ \q_mark } + \clist_map_function:NN \l__scontents_temp_tl \__scontents_require_auxiii:n + } +\cs_new_protected:Npn \__scontents_require_auxiii:n #1 + { \str_if_eq:eeF {expl3} {#1} { \msg_error:nnn { scontents } { invalid-package } {#1} } } +\msg_new:nnn { scontents } { invalid-package } + { Package~`#1'~invalid~in~scontents.~This~is~an~error~in~scontents. } +\__scontents_compat_redefine:cpn { @ifpackagelater } #1 + { \exp_args:Nc \__scontents_package_later_aux:Nn { ver@#1.sty } } +\cs_new_protected:Npn \__scontents_package_later_aux:Nn #1 #2 + { + \int_compare:nNnTF + { \exp_after:wN \__scontents_parse_version:w #1 //00 \q_mark } < + { \exp_after:wN \__scontents_parse_version:w #2 //00 \q_mark } + } +\cs_new:Npn \__scontents_parse_version:w #1 { \__scontents_parse_version_auxi:w 0#1 } +\cs_new:Npn \__scontents_parse_version_auxi:w #1/#2/#3#4#5 \q_mark + { \__scontents_parse_version_auxii:w #1-#2-#3#4 \q_mark } +\cs_new:Npn \__scontents_parse_version_auxii:w #1-#2-#3#4#5 \q_mark + { \tl_if_blank:nF {#2} {#1} #2 #3 #4 } +\__scontents_compat_redefine:Npn \ProvidesExplPackage #1 #2 #3 #4 + { \__scontents_provides_aux:nn {#1} { #2 \ifx\relax#3\relax\else v#3\space\fi #4 } } +\cs_new_protected:Npn \__scontents_provides_aux:nn #1 #2 + { + \tl_gset:cx { ver@#1.sty } {#2} + \iow_log:n { Package~#1:~#2 } + \ExplSyntaxOn + } +\__scontents_compat_redefine:Npn \DeclareOption + { \__scontents_stararg:nn { \use_none:n } { \use_none:nn } } +\__scontents_compat_redefine:Npn \ProcessOptions + { \__scontents_stararg:nn { } { } } +\int_set:Nn \l__scontents_tmpa_int { \char_value_catcode:n { `\@ } } +\char_set_catcode_letter:N \@ +\exp_after:wN +\ExplSyntaxOff +\file_input:n { xparse.sty } +\ExplSyntaxOn +\char_set_catcode:nn { `\@ } { \l__scontents_tmpa_int } +\__scontents_compat_restore: +\NewDocumentEnvironment { scontents } { } + { + \group_begin: + \__scontents_scontents_env_begin: + } + { + \__scontents_scontents_env_end: + \group_end: + } +\NewDocumentCommand \__scontents_grab_optional:w { r[] } + { \__scontents_grab_optional:n {#1} } +\bool_new:N \l__scontents_temp_bool +\cs_new_protected:Npn \verbatim + { \__scontents_verbatim_aux: \frenchspacing \__scontents_vobeyspaces: \__scontents_xverb: } +\cs_new_protected:Npn \__scontents_verbatim_aux: + { + \skip_vertical:N \parskip + \int_set:Nn \parindent { 0pt } + \skip_set:Nn \parfillskip { 0pt plus 1fil } + \int_set:Nn \parskip { 0pt plus0pt minus0pt } + \tex_par:D + \bool_set_false:N \l__scontents_temp_bool + \cs_set:Npn \par + { + \bool_if:NTF \l__scontents_temp_bool + { + \mode_leave_vertical: + \null + \tex_par:D + \penalty \interlinepenalty + } + { + \bool_set_true:N \l__scontents_temp_bool + \mode_if_horizontal:T + { \tex_par:D \penalty \interlinepenalty } + } + } + \cs_set_eq:NN \do \char_set_catcode_other:N + \dospecials \obeylines + \tl_use:N \l__scontents_verb_font_tl + \cs_set_eq:NN \do \__scontents_do_noligs:N + \__scontents_nolig_list: + \tex_everypar:D \exp_after:wN + { \tex_the:D \tex_everypar:D \tex_unpenalty:D } + } +\cs_new_protected:Npn \__scontents_nolig_list: + { \do\`\do\<\do\>\do\,\do\'\do\- } +\cs_new_protected:Npn \__scontents_vobeyspaces: + { \__scontents_set_active_eq:NN \ \__scontents_xobeysp: } +\cs_new_protected:Npn \__scontents_xobeysp: + { \mode_leave_vertical: \nobreak \ } +\cs_if_exist:NF \dospecials + { + \cs_new:Npn \dospecials + { \seq_map_function:NN \l_char_special_seq \do } + } +\NewDocumentCommand { \Scontents }{ !s !O{} } + { \__scontents_Scontents_internal:nn {#1} {#2} } +\NewDocumentCommand { \__scontents_verb_arg:w } { +v } + { \__scontents_verb_arg_internal:n {#1} } +\NewDocumentCommand { \getstored } { O{1} m } + { \__scontents_getstored_internal:nn {#1} {#2} } +\NewDocumentCommand { \foreachsc } { o m } + { \__scontents_foreachsc_internal:nn {#1} {#2} } +\NewDocumentCommand { \typestored } { o m } + { \__scontents_typestored_internal:nn {#1} {#2} } +\use:x + { + \cs_new_protected:Npn \exp_not:N \__scontents_xverb:w + ##1 \g__scontents_end_verbatimsc_tl + { ##1 \exp_not:N \endverbatimsc } + } +\NewDocumentEnvironment { verbatimsc } { } + { + \group_begin: + \verbatim + } + { + \group_end: + } +\group_begin: + \char_set_catcode_active:n { `\* } + \cs_new_protected:Npn \__scontents_plain_disable_outer_par: + { + \group_begin: + \char_set_lccode:nn { `\* } { `\^^L } + \tex_lowercase:D { \group_end: + \tex_let:D * \scan_stop: + } + } +\group_end: +\NewDocumentCommand { \setupsc } { +m } + { \keys_set:nn { scontents } {#1} } +\NewDocumentCommand { \meaningsc } { o m } + { \__scontents_meaningsc_internal:nn {#1} {#2} } +\NewExpandableDocumentCommand { \countsc } { m } + { \seq_count:c { g__scontents_name_#1_seq } } +\NewDocumentCommand { \cleanseqsc } { m } + { \seq_clear_new:c { g__scontents_name_#1_seq } } +\ExplSyntaxOff +\endinput +%% +%% End of file `scontents.tex'. diff --git a/Master/texmf-dist/doc/latex/scontents/t-scontents.mkvi b/Master/texmf-dist/doc/latex/scontents/t-scontents.mkvi new file mode 100644 index 00000000000..4365af18f1c --- /dev/null +++ b/Master/texmf-dist/doc/latex/scontents/t-scontents.mkvi @@ -0,0 +1,194 @@ +%% +%% This is file `t-scontents.mkvi', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% scontents.dtx (with options: `loader,context') +%% +%% Copyright (C) 2019 by Pablo González L <pablgonz@educarchile.cl> +%% +%% This work may be distributed and/or modified under the conditions of the +%% LaTeX Project Public License, either version 1.3c of this license or (at +%% your option) any later version. The latest version of this license is in +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3c or later is part of all distributions of LaTeX version +%% 2005/12/01 or later. +%% +%% This work is "maintained" (as per the LPPL maintenance status) +%% by Pablo González Luengo. +%% +%% This work consists of the files scontents.dtx and +%% scontents.ins, +%% and the derived files scontents.sty, +%% scontents.tex, +%% t-scontents.mkvi and +%% scontents-code.tex. +%% +%% +%% The original source files were: +%% +%% scontents.dtx (with options: `loader,context') +%D \module +%D [ file=t-scontents, +%D version=1.5, +%D title=\CONTEXT\ User Module, +%D subtitle=Storing Contents, +%D author=Pablo González, +%D date=2019-10-24, +%D copyright=Pablo González, +%D email=pablgonz@educarchile.cl, +%D license=LPPL] +\def\ScontentsFileDate{2019-10-24}% +\def\ScontentsFileVersion{1.5}% +\def\ScontentsFileDescription{Stores LaTeX contents in memory or files}% +\writestatus{loading}{User Module scontents v\ScontentsFileVersion} +\unprotect +\input expl3-generic.tex +\ExplSyntaxOn +\tl_gset:cx { ver @ scontents . sty } { \ScontentsFileDate\space + v\ScontentsFileVersion\space \ScontentsFileDescription } +\iow_log:x { Package: ~ scontents ~ \use:c { ver @ scontents . sty } } +\tl_new:N \g__scontents_end_verbatimsc_tl +\tl_gset_rescan:Nnn + \g__scontents_end_verbatimsc_tl + { + \char_set_catcode_other:N \\ + } + { \stopverbatimsc } +\tl_const:Nx \c__scontents_end_env_tl + { + \c_backslash_str + stop + scontents + } +\file_input:n { scontents-code.tex } +\cs_new:Npn \__scontents_format_case:nnn #1 #2 #3 + {#3} % ConTeXt +\keys_define:nn { scontents } + { verb-font .initial:n = \tt } +\seq_new:N \l__scontents_compat_seq +\cs_new_protected:Npn \__scontents_compat_redefine:Npn #1 + { + \seq_put_right:Nn \l__scontents_compat_seq {#1} + \cs_set_eq:cN { __scontents_saved_\cs_to_str:N #1: } #1 + \cs_new_protected:Npn #1 + } +\cs_new_protected:Npn \__scontents_compat_restore: + { \seq_map_function:NN \l__scontents_compat_seq \__scontents_compat_restore:N } +\cs_new_protected:Npn \__scontents_compat_restore:N #1 + { + \cs_set_eq:Nc #1 { __scontents_saved_\cs_to_str:N #1: } + \cs_undefine:c { __scontents_saved_\cs_to_str:N #1: } + } +\cs_generate_variant:Nn \__scontents_compat_redefine:Npn { c } +\cs_new_protected:Npn \__scontents_optarg:nn #1 #2 + { \peek_charcode_ignore_spaces:NTF [ {#1} {#1[#2]} } +\cs_new_protected:Npn \__scontents_stararg:nn #1 #2 + { \peek_charcode_remove_ignore_spaces:NTF * {#1} {#2} } +\__scontents_compat_redefine:Npn \RequirePackage + { \__scontents_optarg:nn { \__scontents_require_auxi:wn } { } } +\cs_new_protected:Npn \__scontents_require_auxi:wn [#1] #2 + { \__scontents_optarg:nn { \__scontents_require_auxii:wnw [{#1}]{#2} } { } } +\cs_new:Npn \__scontents_zap_space:ww #1~#2 + { + #1 \if_meaning:w #2 \q_mark + \exp_after:wN \use_none:n + \else: + \exp_after:wN \__scontents_zap_space:ww + \fi: #2 + } +\cs_new_protected:Npn \__scontents_require_auxii:wnw [#1] #2 [#3] + { + \tl_set:Nx \l__scontents_temp_tl { \__scontents_zap_space:ww #2 ~ \q_mark } + \clist_map_function:NN \l__scontents_temp_tl \__scontents_require_auxiii:n + } +\cs_new_protected:Npn \__scontents_require_auxiii:n #1 + { \str_if_eq:eeF {expl3} {#1} { \msg_error:nnn { scontents } { invalid-package } {#1} } } +\msg_new:nnn { scontents } { invalid-package } + { Package~`#1'~invalid~in~scontents.~This~is~an~error~in~scontents. } +\__scontents_compat_redefine:cpn { @ifpackagelater } #1 + { \exp_args:Nc \__scontents_package_later_aux:Nn { ver@#1.sty } } +\cs_new_protected:Npn \__scontents_package_later_aux:Nn #1 #2 + { + \int_compare:nNnTF + { \exp_after:wN \__scontents_parse_version:w #1 //00 \q_mark } < + { \exp_after:wN \__scontents_parse_version:w #2 //00 \q_mark } + } +\cs_new:Npn \__scontents_parse_version:w #1 { \__scontents_parse_version_auxi:w 0#1 } +\cs_new:Npn \__scontents_parse_version_auxi:w #1/#2/#3#4#5 \q_mark + { \__scontents_parse_version_auxii:w #1-#2-#3#4 \q_mark } +\cs_new:Npn \__scontents_parse_version_auxii:w #1-#2-#3#4#5 \q_mark + { \tl_if_blank:nF {#2} {#1} #2 #3 #4 } +\__scontents_compat_redefine:Npn \ProvidesExplPackage #1 #2 #3 #4 + { \__scontents_provides_aux:nn {#1} { #2 \ifx\relax#3\relax\else v#3\space\fi #4 } } +\cs_new_protected:Npn \__scontents_provides_aux:nn #1 #2 + { + \tl_gset:cx { ver@#1.sty } {#2} + \iow_log:n { Package~#1:~#2 } + \ExplSyntaxOn + } +\__scontents_compat_redefine:Npn \DeclareOption + { \__scontents_stararg:nn { \use_none:n } { \use_none:nn } } +\__scontents_compat_redefine:Npn \ProcessOptions + { \__scontents_stararg:nn { } { } } +\int_set:Nn \l__scontents_tmpa_int { \char_value_catcode:n { `\@ } } +\char_set_catcode_letter:N \@ +\exp_after:wN +\ExplSyntaxOff +\file_input:n { xparse.sty } +\ExplSyntaxOn +\char_set_catcode:nn { `\@ } { \l__scontents_tmpa_int } +\__scontents_compat_restore: +\cs_new_protected:Npn \startscontents + { + \group_begin: + \__scontents_scontents_env_begin: + } +\cs_new_protected:Npn \stopscontents + { + \__scontents_scontents_env_end: + \group_end: + } +\NewDocumentCommand \__scontents_grab_optional:w { r[] } + { \__scontents_grab_optional:n {#1} } +\cs_if_exist:NF \dospecials + { + \cs_new:Npn \dospecials + { \seq_map_function:NN \l_char_special_seq \do } + } +\NewDocumentCommand { \Scontents }{ !s !O{} } + { \__scontents_Scontents_internal:nn {#1} {#2} } +\NewDocumentCommand { \__scontents_verb_arg:w } { +v } + { \__scontents_verb_arg_internal:n {#1} } +\NewDocumentCommand { \getstored } { O{1} m } + { \__scontents_getstored_internal:nn {#1} {#2} } +\NewDocumentCommand { \foreachsc } { o m } + { \__scontents_foreachsc_internal:nn {#1} {#2} } +\NewDocumentCommand { \typestored } { o m } + { \__scontents_typestored_internal:nn {#1} {#2} } +\use:x + { + \cs_new_protected:Npn \exp_not:N \__scontents_xverb:w + ##1 \g__scontents_end_verbatimsc_tl + { ##1 \exp_not:N \stopverbatimsc } + } +\definetyping[verbatimsc] +\group_begin: + \cs_new_protected:Npn \__scontents_plain_disable_outer_par: + { } +\group_end: +\NewDocumentCommand { \setupsc } { +m } + { \keys_set:nn { scontents } {#1} } +\NewDocumentCommand { \meaningsc } { o m } + { \__scontents_meaningsc_internal:nn {#1} {#2} } +\NewExpandableDocumentCommand { \countsc } { m } + { \seq_count:c { g__scontents_name_#1_seq } } +\NewDocumentCommand { \cleanseqsc } { m } + { \seq_clear_new:c { g__scontents_name_#1_seq } } +\ExplSyntaxOff +\endinput +%% +%% End of file `t-scontents.mkvi'. |