diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/xsim/xsim.base.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/xsim/xsim.base.code.tex | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/xsim/xsim.base.code.tex b/Master/texmf-dist/tex/latex/xsim/xsim.base.code.tex new file mode 100644 index 00000000000..30be8b9d18f --- /dev/null +++ b/Master/texmf-dist/tex/latex/xsim/xsim.base.code.tex @@ -0,0 +1,169 @@ +% ---------------------------------------------------------------------------- +% the XSIM package - base module +% +% eXercise Sheets IMproved +% +% ---------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://github.com/cgnieder/xsim +% E-Mail: contact@mychemistry.eu +% ---------------------------------------------------------------------------- +% Copyright 2017 Clemens Niederberger +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% 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.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% ---------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% ---------------------------------------------------------------------------- +\XSIMmodule{base}{basic functionality of the package} + +\xsim_load_modules:n {auxfile} + +% ---------------------------------------------------------------------------- +% variants of kernel functions: +\cs_generate_variant:Nn \seq_set_split:Nnn {Nnx,NV} +\cs_generate_variant:Nn \seq_gset_split:Nnn {c} +\cs_generate_variant:Nn \seq_count:N {c} +\cs_generate_variant:Nn \seq_if_empty:NT {c} +\cs_generate_variant:Nn \prop_put:Nnn {cxx} +\cs_generate_variant:Nn \prop_gput:Nnn {Nx,Nnx,cxx} +\cs_generate_variant:Nn \prop_item:Nn {c} +\cs_generate_variant:Nn \prop_if_in:NnTF {Nx} +\cs_generate_variant:Nn \use:nn {nx} +\cs_generate_variant:Nn \file_input:n {V,x} +\cs_generate_variant:Nn \file_if_exist:nT {V,x} +\cs_generate_variant:Nn \file_if_exist:nTF {V} +\cs_generate_variant:Nn \msg_error:nnnnn {nnnxx} +\cs_generate_variant:Nn \keys_define:nn {nx} +\cs_generate_variant:Nn \keys_set:nn {xn} +\cs_generate_variant:Nn \tl_mixed_case:n {x,f} +\cs_generate_variant:Nn \tl_if_eq:nnTF {ff,V} +\cs_generate_variant:Nn \tl_if_eq:nnT {x} +\cs_generate_variant:Nn \tl_if_blank:nTF {f} +\cs_generate_variant:Nn \tl_set_rescan:Nnn {Nnn} +\cs_generate_variant:Nn \iow_now:Nn {NV} +\cs_generate_variant:Nn \str_if_eq:nnT {x} +\cs_generate_variant:Nn \iow_now:Nn {NV} + +% ---------------------------------------------------------------------------- +% temporary variables: +\tl_new:N \l__xsim_tmpa_tl +\tl_new:N \l__xsim_tmpb_tl +\tl_new:N \l__xsim_tmpc_tl +\tl_new:N \l__xsim_tmpd_tl + +\str_new:N \l__xsim_tmpa_str +\str_new:N \l__xsim_tmpb_str +\str_new:N \l__xsim_tmpc_str + +\bool_new:N \l__xsim_tmpa_bool +\bool_new:N \l__xsim_tmpb_bool +\bool_new:N \l__xsim_tmpc_bool + +\dim_new:N \l__xsim_tmpa_dim +\dim_new:N \l__xsim_tmpb_dim +\dim_new:N \l__xsim_tmpc_dim + +\seq_new:N \l__xsim_tmpa_seq +\seq_new:N \l__xsim_tmpb_seq +\seq_new:N \l__xsim_tmpc_seq + +\int_new:N \l__xsim_tmpa_int +\int_new:N \l__xsim_tmpb_int +\int_new:N \l__xsim_tmpc_int + +\box_new:N \l__xsim_tmpa_box +\box_new:N \l__xsim_tmpb_box +\box_new:N \l__xsim_tmpc_box + +\clist_new:N \l__xsim_tmpa_clist +\clist_new:N \l__xsim_tmpb_clist +\clist_new:N \l__xsim_tmpc_clist + +% ---------------------------------------------------------------------------- + +\prg_new_conditional:Npnn \xsim_if_komascript: {T,F,TF} + { + \cs_if_exist:cTF {KOMAClassName} + { \prg_return_true: } + { \prg_return_false: } + } + +% ---------------------------------------------------------------------------- + +\prg_new_conditional:Npnn \xsim_if_final: {p,T,F,TF} + { + \bool_if:NTF \g_xsim_final_bool + { \prg_return_true: } + { \prg_return_false: } + } + +\prg_new_conditional:Npnn \xsim_if_verbose: {p,T,F,TF} + { + \bool_if:NTF \g_xsim_verbose_bool + { \prg_return_true: } + { \prg_return_false: } + } + +\prg_new_conditional:Npnn \xsim_if_rerun: {p,T,F,TF} + { + \bool_if:NTF \g__xsim_rerun_bool + { \prg_return_true: } + { \prg_return_false: } + } + +\prg_new_conditional:Npnn \xsim_if_clear_aux: {p,T,F,TF} + { + \xsim_if_final:TF + { \prg_return_false: } + { + \bool_if:NTF \g_xsim_clear_aux_bool + { \prg_return_true: } + { \prg_return_false: } + } + } + +\cs_new_protected:Npn \xsim_verbose:n #1 + { \xsim_if_verbose:T { \msg_info:nnn {xsim} {verbose} {#1} } } +\cs_generate_variant:Nn \xsim_verbose:n {x} + +\cs_new_protected:Npn \xsim_rerun: + { \bool_gset_true:N \g__xsim_rerun_bool } + +\prg_new_conditional:Npnn \xsim_if_chapter: {p,T,F,TF} + { + \bool_if:nTF + { \cs_if_exist_p:N \chapter && \cs_if_exist_p:N \c@chapter } + { \prg_return_true: } + { \prg_return_false: } + } + +% ---------------------------------------------------------------------------- + +% #1: macro name +% #2: 0 to 9 times `n' (= number of arguments of internal item) +% #3: code; may contain a suiting \__xsim_loop_item:<nnn> +\cs_new_protected:Npn \xsim_define_loop_macro:Nnn #1#2#3 + { + \xsim_verbose:n { Defining~ loop~ macro~ #1 } + \cs_new_protected:Npn #1 ##1##2 + { \cs_set:cn {__xsim_loop_item:#2} {##2} #3 } + } + +% ---------------------------------------------------------------------------- + +\cs_new_protected:Npn \xsim_setup:n #1 + { \keys_set:nn {xsim} {#1} } + +% ---------------------------------------------------------------------------- +\tex_endinput:D |