aboutsummaryrefslogtreecommitdiff
path: root/exercisesheets.sty
diff options
context:
space:
mode:
Diffstat (limited to 'exercisesheets.sty')
-rw-r--r--exercisesheets.sty68
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")}