diff options
Diffstat (limited to 'exercisesheets.sty')
| -rw-r--r-- | exercisesheets.sty | 68 |
1 files changed, 46 insertions, 22 deletions
diff --git a/exercisesheets.sty b/exercisesheets.sty index 3eb8d9f..01b034b 100644 --- a/exercisesheets.sty +++ b/exercisesheets.sty @@ -627,6 +627,7 @@ \listadd{\exsh@enums}{compactenum} \listadd{\exsh@enums}{asparaenum} \listadd{\exsh@enums}{inparaenum} +\listadd{\exsh@enums}{subtasks} \listadd{\exsh@nonenums}{itemize} \listadd{\exsh@nonenums}{compactitem} \listadd{\exsh@nonenums}{asparaitem} @@ -647,16 +648,25 @@ \fi %%%%%%%%%%%%%%% END BEAMER-SPECIFIC %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ExplSyntaxOn +\cs_new_eq:NN \exsh@ifsingletoken \tl_if_single_token:nTF +\ExplSyntaxOff \long\def\exsh@skipstuff#1{% - \ifstrequal{#1}{\begin}{\exsh@skipstuff@begin}{% - \ifstrequal{#1}{\end}{\exsh@skipstuff@end}{% - \ifstrequal{#1}{\includeexercise}{\exsh@skipstuff@incex}{% - \ifstrequal{#1}{\label}{\exsh@skipstuff@label}{% - \ifstrequal{#1}{\input}{\exsh@skipstuff@input}{% - \ifstrequal{#1}{\exsh@skipstuff@endfile}{\currfile@pop\exsh@skipstuff}{% - \ifstrequal{#1}{\setcounter}{\expandafter\exsh@skipstuff\setcounter}{% - \ifstrequal{#1}{\item}{\ifdef{\@enumctr}{\exsh@hyper@itemtrue\refstepcounter{\@enumctr}}{}}{}% - \pgfkeysvalueof{/exsh/custom skip macro}{#1}}}}}}}}% + \detokenize{.#1.} + \exsh@ifsingletoken{#1}{% + \ifstrequal{#1}{\begin}{\exsh@skipstuff@begin}{% + \ifstrequal{#1}{\end}{\exsh@skipstuff@end}{% + \ifstrequal{#1}{\includeexercise}{\exsh@skipstuff@incex}{% + \ifstrequal{#1}{\label}{\exsh@skipstuff@label}{% + \ifstrequal{#1}{\subtask}{\exsh@skipstuff@subtask}{% + \ifstrequal{#1}{\input}{\exsh@skipstuff@input}{% + \ifstrequal{#1}{\exsh@skipstuff@endfile}{\currfile@pop\exsh@skipstuff}{% + \ifstrequal{#1}{\setcounter}{\expandafter\exsh@skipstuff\setcounter}{% + \ifstrequal{#1}{\item}{\ifdef{\@enumctr}{\exsh@hyper@itemtrue\refstepcounter{\@enumctr}}{}}{}% + \pgfkeysvalueof{/exsh/custom skip macro}{#1}}}}}}}}}% + }{% + \exsh@skipstuff#1 + } } \let\exshskipcontinue\exsh@skipstuff \long\def\exsh@skipcustomstuff#1{\exshskipcontinue} @@ -670,20 +680,22 @@ } \def\exsh@skipstuff@begin#1{% \begingroup - \ifstrequal{#1}{exercise}{\refstepcounter{section}% - % automatic label for the first exercise in every included file - \ifthenelse{\equal{\jobname}{\currfilebase}}{}{% - \ifcsdef{exsh@autolabel@\currfilebase}{}{% - \csdef{exsh@autolabel@\currfilebase}{}% - \exsh@autolabel{ex:\currfilebase}}}% - }{}% - \ifinlist{#1}{\exsh@enums}{% - \exsh@skipstuff@beginenum - }{% - \ifinlist{#1}{\exsh@nonenums}{% - \undef\@enumctr + \ifstrequal{#1}{Lexercise}{\exsh@skipstuff@Lexercise}{% + \ifstrequal{#1}{exercise}{\refstepcounter{section}% + % automatic label for the first exercise in every included file + \ifthenelse{\equal{\jobname}{\currfilebase}}{}{% + \ifcsdef{exsh@autolabel@\currfilebase}{}{% + \csdef{exsh@autolabel@\currfilebase}{}% + \exsh@autolabel{ex:\currfilebase}}}% }{}% - \exsh@skipstuff + \ifinlist{#1}{\exsh@enums}{% + \exsh@skipstuff@beginenum + }{% + \ifinlist{#1}{\exsh@nonenums}{% + \undef\@enumctr + }{}% + \exsh@skipstuff + }% }% } \def\exsh@skipstuff@beginenum{% @@ -714,6 +726,9 @@ \endgroup \exsh@skipstuff } +\def\exsh@skipstuff@subtask#1{% + \exsh@skipstuff \item #1 +} \def\exsh@skipstuff@input#1{% \CatchFileDef{\exsh@inputfilecontent}{#1}{}% \currfile@push @@ -1545,6 +1560,12 @@ !exsh@dlua<exsh_cur_exercise=exercise({#1})> % !endgroup!end<Lexercise>% > +!global!long!def!exsh@start@skip@Lexercise#1\end{Lexercise}< % + !exsh@dlua<exsh_cur_exercise=exercise({#1})> % + !endgroup!endgroup% + !expandafter!exsh@skipstuff% + !exsh@dlua<exsh_texprintlines(exsh_cur_exercise)>% +> !endgroup \def\exsh@lua@catcodesBG{ @@ -1574,4 +1595,7 @@ \fi } +\def\exsh@skipstuff@Lexercise{\exsh@lua@catcodesBG\exsh@start@skip@Lexercise}% +% \exsh@lua@catcodesBG\exsh@start@skip@Lexercise} + \exsh@dlua{dofile("exsh_lexercise.lua")} |
