summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/scontents
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-10-02 21:18:19 +0000
committerKarl Berry <karl@freefriends.org>2019-10-02 21:18:19 +0000
commit40da9ba138cb7756f970eca33d3896daf628c2c9 (patch)
treef672783eed5ba42c2d67d5d76ff542d14eb1b377 /Master/texmf-dist/tex/latex/scontents
parent74b90237d9652cb087fea6622543cf4bd13cfd54 (diff)
scontents (2oct19)
git-svn-id: svn://tug.org/texlive/trunk@52260 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/scontents')
-rw-r--r--Master/texmf-dist/tex/latex/scontents/scontents.sty281
1 files changed, 167 insertions, 114 deletions
diff --git a/Master/texmf-dist/tex/latex/scontents/scontents.sty b/Master/texmf-dist/tex/latex/scontents/scontents.sty
index 6983b4517d5..48aba087349 100644
--- a/Master/texmf-dist/tex/latex/scontents/scontents.sty
+++ b/Master/texmf-dist/tex/latex/scontents/scontents.sty
@@ -1,13 +1,38 @@
-%%^^A Initial declaration of the package
+%%
+%% This is file `scontents.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% scontents.dtx (with options: `package')
+%%
+%% 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 file scontents.dtx
+%% and the derived files scontents.ins,
+%% scontents.pdf and
+%% scontents.sty.
+%%
\RequirePackage{l3keys2e}
\RequirePackage{xparse}[2019/05/28]
-\ProvidesExplPackage{scontents}{2019/09/24}{1.3}
+\ProvidesExplPackage{scontents}{2019/10/03}{1.4}
{Stores LaTeX contents in memory or files}
-%%^^A Checking the version of xparse
-\@ifpackagelater { xparse } { 2019/05/03 }
+\@ifpackagelater { expl3 } { 2019/09/19 }
{ }
{
- \PackageError { scontents } { Support~package~xparse~too~old }
+ \PackageError { scontents } { Support~package~expl3~too~old }
{
You~need~to~update~your~installation~of~the~bundles~
'l3kernel'~and~'l3packages'.\MessageBreak
@@ -15,7 +40,6 @@
}
\file_input_stop:
}
-%%^^A Common keys available as package options
\keys_define:nn { scontents }
{
store-env .tl_set:N = \l__scontents_name_seq_env_tl,
@@ -41,26 +65,22 @@
width-tab .value_required:n = true,
print-all .meta:n = { print-env = #1 , print-cmd = #1 },
print-all .default:n = true,
- unknown .code:n = { \__scontents_parse_unknown_key:n {#1} }
+ store-all .meta:n = { store-env = #1 , store-cmd = #1 },
+ store-all .value_required:n = true
}
-%%^^A Process options for package
\ProcessKeysOptions { scontents }
-%%^^A Internal token list vars
\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
-%%^^A Internal int vars
\int_new:N \l__scontents_seq_item_int
\int_new:N \l__scontents_env_nesting_int
\int_new:N \l__scontents_tmpa_int
-%%^^A Internal bool vars
\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
-%%^^A A token list to match \env{verbatimsc} and \env{scontents}
\tl_new:N \g__scontents_end_verbatimsc_tl
\tl_gset_rescan:Nnn
\g__scontents_end_verbatimsc_tl
@@ -72,23 +92,19 @@
{ \end{verbatimsc} }
\tl_const:Nx \c__scontents_end_env_tl
{ \c_backslash_str end \c_left_brace_str scontents \c_right_brace_str }
-%%^^A Internal quarks
+\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
-%%^^A Stream for saving the contents
\iow_new:N \l__scontents_file_iow
-%%^^A Copy of scantokens in expl3
\cs_new_protected:Npn \__scontents_rescan_tokens:n #1 { \tex_scantokens:D {#1} }
\cs_generate_variant:Nn \__scontents_rescan_tokens:n { V, x }
-%%^^A Internal \tab and \par
\cs_new:Npx \__scontents_tab: { \c_space_tl }
\cs_new:Npn \__scontents_par: { ^^J ^^J }
-%%^^A Some nonstandard variants
\cs_generate_variant:Nn \tl_remove_once:Nn { NV }
\cs_generate_variant:Nn \tl_replace_all:Nnn { Nx, Nxx, Nnx }
\prg_generate_conditional_variant:Nnn \tl_if_empty:n { f } { TF }
-%%^^A Add keys to scontents environnment
-\keys_define:nn { scontents }
+\keys_define:nn { scontents / scontents }
{
write-env .code:n = {
\bool_set_true:N \l__scontents_writing_bool
@@ -100,67 +116,100 @@
\tl_set:Nn \l__scontents_fname_out_tl {#1}
},
write-env .value_required:n = true,
- write-out .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} }
}
-%%^^A A sub/keys for command \Scontents
\keys_define:nn { scontents / Scontents }
{
- print-cmd .meta:nn = { scontents } { print-cmd = #1 },
- store-cmd .meta:nn = { scontents } { store-cmd = #1 },
- force-eol .meta:nn = { scontents } { force-eol = #1 }
+ 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 / 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} }
}
-%%^^A Parse unknown keys
-\cs_new_protected:Npn \__scontents_parse_unknown_key:n #1
- { \exp_args:NV \__scontents_parse_unknown_key:nn \l_keys_key_tl {#1} }
-\cs_new_protected:Npn \__scontents_parse_unknown_key:nn #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_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 } { key-value-unknown } {#1} {#2} }
+ { \msg_error:nnnn { scontents } { type-key-value-unknown } {#1} {#2} }
}
{
\tl_if_blank:nTF {#2}
- { \msg_error:nnn { scontents } { key-unknown } {#1} }
- { \msg_error:nnnn { scontents } { key-value-unknown } {#1} {#2} }
+ { \msg_error:nnn { scontents } { type-key-unknown } {#1} }
+ { \msg_error:nnnn { scontents } { type-key-value-unknown } {#1} {#2} }
}
}
-%%^^A Programming of the sequences
\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_seq_name_#1_seq }
- { \seq_new:c { g__scontents_seq_name_#1_seq } }
- \seq_gput_right:cn { g__scontents_seq_name_#1_seq } {#2}
+ \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_seq_name_#2_seq }
+ \seq_if_exist:cTF { g__scontents_name_#2_seq }
{
\exp_args:Nf \__scontents_getfrom_seq:nnn
- { \seq_count:c { g__scontents_seq_name_#2_seq } }
+ { \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
+\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_seq_name_#3_seq } {#2} }
+ { \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
}
-%%^^A Storing content in sequences
-\cs_new_protected:Npn \__scontents_store_to_seq:NN #1 #2
+\cs_new_protected:Npn \__scontents_store_to_seq:NN #1#2
{
\tl_log:N #1
\__scontents_append_contents:Vx #2 { \exp_not:V #1 }
}
-%%^^A Definition of {scontents}[key=val] env
\NewDocumentEnvironment { scontents } { }
{
\char_set_catcode_active:N \^^M
@@ -170,7 +219,6 @@
\__scontents_stop_environment:
\__scontents_atend_environment:
}
-%%^^A Test [key=val] for environment scontents
\cs_new_protected:Npn \__scontents_environment_inline:w
{
\peek_charcode_ignore_spaces:NTF [ % ]
@@ -182,7 +230,7 @@
}
\cs_new_protected:Npn \__scontents_environment_keys:w [ #1 ]
{
- \keys_set_known:nn { scontents } {#1}
+ \keys_set:nn { scontents / scontents } {#1}
\__scontents_environment_junk:xw
{ after~optional~argument~to~\c_backslash_str begin{scontents} }
}
@@ -192,7 +240,6 @@
{ \msg_error:nnnn { scontents } { junk-after-begin } {#1} {#2} }
}
\cs_generate_variant:Nn \__scontents_environment_junk:nw { x }
-%%^^A First start_environment/stop_environment
\group_begin:
\char_set_catcode_active:N \^^I
\char_set_catcode_active:N \^^L
@@ -211,7 +258,6 @@
\group_end:
\tl_set:Nn \l__scontents_macro_tmp_tl \l__scontents_macro_tmp_tl
}
-%%^^A File write start/File write stop
\cs_new_protected:Npn \__scontents_file_tl_write_start:n #1
{
\group_begin:
@@ -283,10 +329,7 @@
\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
- \bool_if:NT \l__scontents_forced_eol_bool { \exp_not:N ^^J }
- }
+ { \exp_args:NV \__scontents_remove_leading_nl:n \l__scontents_file_tl }
}
}
}
@@ -343,28 +386,22 @@
\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 }
-%%^^A Second atend_environment/stored_to_seq
\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 }
}
- \bool_if:NT \l__scontents_print_env_bool
- {
- \tl_gset_eq:NN \g__scontents_temp_tl \l__scontents_macro_tmp_tl
- \tl_gput_right:NV \g__scontents_temp_tl \c_percent_str
- \group_insert_after:N \__scontents_rescan_tokens:V
- \group_insert_after:N \g__scontents_temp_tl
- }
- \tl_clear:N \l__scontents_macro_tmp_tl
}
-%%^^A User command \Scontents to stored content
\NewDocumentCommand { \Scontents }{ !s !O{} }
{
\group_begin:
\IfNoValueF {#2}
- { \keys_set_known:nn { scontents / Scontents } {#2} }
+ { \keys_set:nn { scontents / Scontents } {#2} }
\char_set_catcode_active:n { 9 }
\IfBooleanTF {#1}
{ \__scontents_verb_arg:w }
@@ -372,47 +409,46 @@
}
\cs_new_protected:Npn \__scontents_norm_arg:n #1
{
- \exp_args:NV \__scontents_append_contents:nn \l__scontents_name_seq_cmd_tl {#1}
- \bool_if:NT \l__scontents_print_cmd_bool { \__scontents_rescan_tokens: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:
}
\NewDocumentCommand { \__scontents_verb_arg:w } { +v }
{
- \tl_set:Nx \l__scontents_temp_tl
- {
- \exp_not:n {#1}
- \bool_if:NT \l__scontents_forced_eol_bool { \exp_not:N ^^J }
- }
+ \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_rescan_tokens:V \l__scontents_temp_tl }
+ { \__scontents_lastfrom_seq:n \l__scontents_name_seq_cmd_tl }
\group_end:
}
-%%^^A User command \getstored to get content
\NewDocumentCommand { \getstored } { O{1} m }
{
\group_begin:
\__scontents_rescan_tokens:x
- {
- \__scontents_getfrom_seq:nn {#1} {#2}
- \c_percent_str
- }
+ { \__scontents_getfrom_seq:nn {#1} {#2} }
\group_end:
}
-%%^^A User command \typestored to verbatimized content
\NewDocumentCommand { \typestored } { o m }
{
\group_begin:
\int_set:Nn \l__scontents_seq_item_int { 1 }
- \IfValueT {#1} { \keys_set:nn { scontents } {#1} }
- \tl_set:Nx \l__scontents_temp_tl { \exp_args:NV \__scontents_getfrom_seq:nn \l__scontents_seq_item_int {#2} }
+ \IfValueT {#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:
}
-%%^^A Internal verb_print:N, need to verbatimized content
\group_begin:
\char_set_catcode_active:N \^^M
\cs_new_protected:Npn \__scontents_verb_print:N #1
@@ -431,7 +467,6 @@
\cs_set_eq:NN ^^M \__scontents_verb_print_EOL:
}
\group_end:
-%%^^A Definition of verbatimsc environment
\cs_new_protected:Npn \__scontents_xverb:
{
\char_set_catcode_active:n { 9 }
@@ -450,10 +485,8 @@
\verbatim
}
{ }
-%%^^A Tab to space
\cs_new:Npn \__scontents_tabs_to_spaces:
{ \prg_replicate:nn { \l__scontents_tab_width_int } { ~ } }
-%%^^A Patch do_noligs for ligatures
\cs_new:Npn \__scontents_do_noligs:N #1
{
\char_set_catcode_active:N #1
@@ -465,7 +498,6 @@
\char_generate:nn { `#1 } { 12 }
}
}
-%%^^A Common catcode changes
\cs_new_protected:Npn \__scontents_set_active_eq:NN #1
{
\char_set_catcode_active:N #1
@@ -477,15 +509,13 @@
\__scontents_set_active_eq:NN \^^L \__scontents_par:
\__scontents_set_active_eq:NN \^^M \__scontents_ret:w
}
-%%^^A User command \setupsc
-\NewDocumentCommand { \setupsc } { m }
+\NewDocumentCommand { \setupsc } { +m }
{ \keys_set:nn { scontents } {#1} }
-%%^^A User command \meaningsc
\NewDocumentCommand { \meaningsc } { o m }
{
\group_begin:
\int_set:Nn \l__scontents_seq_item_int { 1 }
- \IfValueT {#1} { \keys_set:nn { scontents } {#1} }
+ \IfValueT {#1} { \keys_set:nn { scontents / typemeaning } {#1} }
\__scontents_meaningsc:n {#2}
\group_end:
}
@@ -493,21 +523,22 @@
\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_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:
-%%^^A User command \countsc
\NewExpandableDocumentCommand { \countsc } { m }
- { \seq_count:c { g__scontents_seq_name_#1_seq } }
-%%^^A User command \cleanseqsc
+ { \seq_count:c { g__scontents_name_#1_seq } }
\NewDocumentCommand { \cleanseqsc } { m }
- { \seq_clear_new:c { g__scontents_seq_name_#1_seq } }
-%%^^A Messages used throughout the package
+ { \seq_clear_new:c { g__scontents_name_#1_seq } }
\msg_new:nnn { scontents } { junk-after-begin }
{
Junk~characters~#1~\msg_line_context: :
@@ -515,33 +546,17 @@
#2
}
\msg_new:nnn { scontents } { empty-stored-content }
- { Empty~value~for~key~`getstored'~\msg_line_context:. }
+ { Empty~value~for~key~'getstored'~\msg_line_context:. }
\msg_new:nnn { scontents } { empty-variable }
- { Variable~`#1'~empty~\msg_line_context:. }
+ { Variable~'#1'~empty~\msg_line_context:. }
\msg_new:nnn { scontents } { rewriting-file }
- { Overwriting ~ file ~ `#1' }
+ { Overwriting ~ file ~ '#1' }
\msg_new:nnn { scontents } { writing-file }
- { Writing ~ file ~ `#1' }
+ { Writing ~ file ~ '#1' }
\msg_new:nnn { scontents } { rescanning-text }
- { Rescanning~text~`#1'~after~\c_backslash_str end{scontents}~\msg_line_context:.}
+ { 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 } { tab-to-space }
- { Tab~has~been~converted~to~Blank~Space }
-\msg_new:nnn { scontents } { feed-to-space }
- { Form~Feed~has~been~converted~to~Blank~Space }
-\msg_new:nnnn { scontents } { key-unknown }
- { The~key~'#1'~is~unknown~and~is~being~ignored. }
- {
- The~module~'scontents'~does~not~have~a~key~called~'#1'.\\
- Check~that~you~have~spelled~the~key~name~correctly.
- }
-\msg_new:nnnn { scontents } { key-value-unknown }
- { The~key~'#1'~to~which~you~passed~'#2'~is~unknown~and~is~being~ignored. }
- {
- The~module~'scontents'~does~not~have~a~key~called~'#1'.\\
- Check~that~you~have~spelled~the~key~name~correctly.
- }
\msg_new:nnn { scontents } { undefined-storage }
{ Storage~named~'#1'~is~not~defined. }
\msg_new:nnn { scontents } { index-out-of-range }
@@ -554,5 +569,43 @@
{ Max = } { Min = -} #3.
}
}
-%%^^A Finish package :)
+\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 } { 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'.
+ }
\file_input_stop:
+\endinput
+%%
+%% End of file `scontents.sty'.