%%
%% This is file `scontents.tex',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% scontents.dtx  (with options: `loader,plain')
%% 
%% Copyright (C) 2019-2020 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.mkiv and
%%                                 scontents-code.tex.
%% 
\def\ScontentsFileDate{2020-01-21}%
\def\ScontentsFileVersion{1.9}%
\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
      \exp_not:N \l__scontents_env_name_tl
  }
\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 \tl_if_empty:nF {#3} {#3~} #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:
\NewDocumentCommand { \newenvsc } { m O{} }
  {
    \cs_if_exist:cTF { #1 }
      { \msg_error:nnn { scontents } { env-already-defined } {#1} }
      { \__scontents_scontents_setenv:nn {#1} {#2} }
  }
\cs_new_protected:Npn \__scontents_env_define:nnn #1 #2 #3
  {
    \NewDocumentEnvironment {#1} { }
      {
        \group_begin:
          #2
      }
      {
          #3
        \group_end:
      }
  }
\newenvsc{scontents}
\NewDocumentCommand \__scontents_grab_optional:w { r[] }
  { \__scontents_grab_optional:n {#1} }
\cs_new_protected:Npn \__scontents_analyse_nesting_format:n
  { \__scontents_analyse_nesting_generic:nn { } }
\bool_new:N \l__scontents_temp_bool
\cs_new_protected:Npn \verbatimsc
  {
    \group_begin:
      \__scontents_verbatimsc_aux: \frenchspacing \__scontents_vobeyspaces:
      \__scontents_xverb:
  }
\cs_new_protected:Npn \endverbatimsc
  { \group_end: }
\cs_new_protected:Npn \__scontents_verbatimsc_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 }
  }
\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'.
