From 1c2f8218dd04778c243fa873f865c75b534cc6d8 Mon Sep 17 00:00:00 2001
From: Frank Fuhlbrück
Date: Fri, 28 Jan 2022 17:05:45 +0100
Subject: beamer merge completed

---
 exercisesheets-beamer.sty | 1536 ---------------------------------------------
 1 file changed, 1536 deletions(-)
 delete mode 100644 exercisesheets-beamer.sty

(limited to 'exercisesheets-beamer.sty')

diff --git a/exercisesheets-beamer.sty b/exercisesheets-beamer.sty
deleted file mode 100644
index 990b973..0000000
--- a/exercisesheets-beamer.sty
+++ /dev/null
@@ -1,1536 +0,0 @@
-%% exercisesheets-beamer.sty
-%% Copyright 2008-2022 Sebastian Kuhnert, Frank Fuhlbrück
-%
-% 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 https://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 has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Frank Fuhlbrück.
-%
-% This work consists of the files listed in README.
-
-
-%\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-
-% don't forget to update the version and date in exercisesheets.tex
-\def\exsh@version{0.10+git}
-\def\exsh@date{2022/01/12}
-
-\ProvidesPackage{exercisesheets-beamer}[\exsh@date\space\exsh@version\space Typesetting of exercise sheets]
-\message{`Typesetting of exercise sheets' \exsh@version\space <\exsh@date>}
-
-% TODO: fix "above hint skip"
-
-
-\RequirePackage{etoolbox}%[2008/06/28]
-\RequirePackage{scrlfile}
-\RequirePackage{environ}
-
-\RequirePackage{pgfkeys}
-\RequirePackage{keyval}
-\RequirePackage{kvoptions}
-
-\RequirePackage{ifthen}
-\RequirePackage{ifluatex}
-
-\RequirePackage{amsmath}
-
-\RequirePackage{currfile}
-\RequirePackage{catchfile}
-
-% configuration keys
-
-\newif\ifexsh@beamer
-\@ifclassloaded{beamer}{\exsh@beamertrue}{}
-
-\newif\ifexsh@patchenumerate\exsh@patchenumeratetrue
-\newif\ifexsh@savetasks
-\newif\ifexsh@solutions
-\newif\ifexsh@oralsolutions
-\newif\ifexsh@nonoralsolutions
-\newif\ifexsh@samplesolutions
-\newif\ifexsh@exnumsheet
-\newif\ifexsh@forcesample %force printing sample sol. of wrong type
-%For beamer only
-\ifexsh@beamer
-\newif\ifexsh@beamerwithheadline
-\newif\ifexsh@beameruseblocks
-\newif\ifexsh@defersolutiontitle
-\newif\ifexsh@framed
-\fi
-%Also only true for beamer, but we want to use it elsewhere
-\newif\ifexsh@beamersolution
-%%
-\newif\ifexsh@gradingguides
-\newif\ifexsh@inplace
-\newif\ifexsh@sample
-\newif\ifexsh@hide%currently only set via sample in exercise env.
-\newif\ifexsh@pointsfloatright
-\newif\ifexsh@bonus
-\newif\ifexsh@abbrev
-\newif\ifexsh@sumuppoints
-\newif\ifexsh@filenameasexercisename
-\newif\ifexsh@showtodos
-\newif\ifexsh@beamercompatdone
-
-\def\exsh@beamercompatibility{
-\ifexsh@beamercompatdone
-  \PackageError{exercisesheets}{
-    beamercompatibility used twice}{}%
-\else
-\ifexsh@beamer
-  %currently we do nothing if beamer is loaded, 
-  %but this might change
-\else
-  %TODO:\only<>{A} -> {A} which breaks global effects of A
-  \let\pause\relax
-  \def\frame{}
-  \renewcommand{\frame}[1][]{}
-  \let\endframe\relax
-  \def\onslide<##1>{}
-  \def\only<##1>{}
-  \def\uncover<##1>{}
-  \def\visible<##1>{}
-  \def\invisible<##1>{}
-  \long\def\alt<##1>##2##3{##2}
-  \long\def\temporal<##1>##2##3##4{##3}
-  \def\uncover<##1>{}
-  \let\exsh@origitem\item
-  \def\exsh@ovrlitem<##1>{\exsh@origitem}
-  \def\item{\@ifnextchar<\exsh@ovrlitem\exsh@origitem}
-  \let\exsh@origitemize\itemize
-  \def\exsh@ovrlitemize[##1]{\exsh@origitemize}
-  \def\itemize{\@ifnextchar[\exsh@ovrlitemize\exsh@origitemize}
-  \let\exsh@origenumerate\enumerate
-  \def\exsh@ovrlenumerate[##1]{\exsh@origenumerate}
-  \def\enumerate{\@ifnextchar[\exsh@ovrlenumerate\exsh@origenumerate}
-\fi
-  \exsh@beamercompatdonetrue
-\fi
-}
-
-\pgfkeys{/exsh/.is family,/exsh,
-  patchenumerate/.is if=exsh@patchenumerate,
-  patchenumerate/.default=true,
-  savetasks/.is if=exsh@savetasks,
-  savetasks/.default=true,
-  solutions/.is choice,
-  solutions/true/.code=\exsh@solutionstrue\exsh@oralsolutionstrue\exsh@nonoralsolutionstrue,
-  solutions/oral/.code=\exsh@solutionstrue\exsh@oralsolutionstrue\exsh@nonoralsolutionsfalse,
-  solutions/nonoral/.code=\exsh@solutionstrue\exsh@oralsolutionsfalse\exsh@nonoralsolutionstrue,
-  solutions/sample nonoral/.code=\exsh@solutionstrue\exsh@oralsolutionsfalse\exsh@nonoralsolutionstrue\exsh@samplesolutionstrue,
-  solutions/sample oral/.code=\exsh@solutionstrue\exsh@oralsolutionstrue\exsh@nonoralsolutionsfalse\exsh@samplesolutionstrue,
-  solutions/sample all/.code=\exsh@solutionstrue\exsh@oralsolutionstrue\exsh@nonoralsolutionstrue\exsh@samplesolutionstrue,
-  solutions/false/.code=\exsh@solutionsfalse\exsh@oralsolutionsfalse\exsh@nonoralsolutionsfalse,
-  solutions/.default=true,
-  number within sheet/.is if=exsh@exnumsheet,
-  number within sheet/.default=true,
-  forcesample/.is if=exsh@forcesample,
-  forcesample/.default=true,
-  gradingguides/.is if=exsh@gradingguides,
-  gradingguides/.default=true,
-  only/.initial={-},
-  all/.style={/exsh/only={-}},all/.value forbidden,
-  solutionsby/.code={\def\exsh@solutionsby{#1}},
-  solutionsby/.value required,
-  exercisespath/.code={\def\exsh@exercisespath{#1}},
-  exercisespath/.value required,
-  bonus/.is if=exsh@bonus,
-  bonus/.default=true,
-  inplace/.is if=exsh@inplace,
-  inplace/.default=true,
-  sample/.is if=exsh@sample,
-  sample/.default=true,
-  showtodos/.is if=exsh@showtodos,
-  showtodos/.default=true,
-  filenameasexercisename/.is if=exsh@filenameasexercisename,
-  filenameasexercisename/.default=true,
-  pointsfloatright/.is if=exsh@pointsfloatright,
-  pointsfloatright/.default=true,
-  abbrev/.is if=exsh@abbrev,
-  abbrev/.default=true,
-  beamercompatibility/.default={ignore},
-  beamercompatibility/.initial={ignore},
-  beamercompatibility/.code={\exsh@beamercompatibility}
-}
-\ifexsh@beamer
-\pgfkeys{exsh,
-  beamerwithheadline/.is if=exsh@beamerwithheadline,
-  beamerwithheadline/.default=true,
-  beameruseblocks/.is if=exsh@beameruseblocks,
-  beameruseblocks/.default=true,
-  beamersolution/.is if=exsh@beamersolution,
-  beamersolution/.default=true,
-  defersolutiontitle/.is if=exsh@defersolutiontitle,
-  defersolutiontitle/.default=true,
-  framed/.is if=exsh@framed,
-  framed/.default=true,
-  beamersolution/.initial={false},
-  beamerwithheadline/.initial={false},
-  beameruseblocks/.initial={false},
-  defersolutiontitle/.initial={false},
-  framed/.initial={false},
-}
-\else
-\pgfkeys{exsh,
-  beamerwithheadline/.default={ignore},
-  beamerwithheadline/.initial={ignore},
-  beamersolution/.default={ignore},
-  beamersolution/.initial={ignore},
-  defersolutiontitle/.default={ignore},
-  defersolutiontitle/.initial={ignore},
-  framed/.default={ignore},
-  framed/.initial={ignore},
-  framed/.code={\let\newframe\relax},
-}
-\fi
-
-% store title data for sheet headers
-\ifundef\subject{% \subject is only provided by KOMA classes
-  \newcommand{\subject}[1]{}%
-  \def\@subject{}%
-}{}
-% beamer has subject, but not \@subject:
-\providecommand{\@subject}{}
-\apptocmd{\subject}{\pgfkeys{/exsh/subject={#1}}}{}{}%
-\ifdefempty{\@subject}{
-  \pgfkeys{exsh,subject/.initial={\PackageWarning{exercisesheets-beamer}{No \string\subject\space given}}}
-}{
-  \pgfkeys{/exsh/subject/.initial/.expand once=\@subject}
-}
-\ifdefstring{\@date}{\today}{
-  \pgfkeys{/exsh/semester/.initial={\PackageWarning{exercisesheets-beamer}{No semester given in \string\date}}}
-}{
-  \pgfkeys{/exsh/semester/.initial/.expand once=\@date}
-}
-\let\@exsh@origdate\date
-\renewcommand{\date}[1]{\@exsh@origdate{#1}\pgfkeys{/exsh/semester={#1}}}
-% this breaks (likely because of detokenization):
-% -> missing \begin{document}
-% \apptocmd{\date}{\pgfkeys{/exsh/semester={#1}}}{}{}
-\pgfkeys{/exsh/author/.code={%
-    \def\exsh@author{#1}%
-    \def\exsh@repeat{1}%
-    \loop\ifnum\exsh@repeat>0
-      \def\exsh@repeat{0}%
-      \patchcmd{\exsh@author}{\and}{, }{\def\exsh@repeat{1}}{}%
-    \repeat
-  },
-  /exsh/author/.expand once=\@author}
-\let\exsh@oldauthor\author
-\def\author#1{\exsh@oldauthor{#1}\pgfkeys{/exsh/author={#1}}}
-
-% helper macro for automatic language selection
-\newif\ifexsh@provideonly
-\def\exsh@deforprovide#1#2{%
-  \ifthenelse{\(\NOT\boolean{exsh@provideonly}\)
-    \OR \equal{}{\pgfkeysvalueof{#1}}}{%
-    \pgfkeys{#1=#2}%
-  }{}%
-}
-
-\pgfkeys{exsh,
-  %general package options
-  patchenumerate/.initial=true,
-  custom skip macro/.initial=\exsh@skipcustomstuff,
-  showtodos/.initial={false},
-  hidetodos/.style={/exsh/showtodos=false},
-  hidetodos/.value forbidden,
-  % additional sheet info
-  title/.initial={},
-  date/.initial={},
-  note/.initial={},
-  exauthor/.initial={\exsh@author},
-  number within sheet/.initial={false},
-  %
-  % additional exercise info
-  name/.initial={},
-  forcesample/.initial={false},
-  firstline/.initial={},
-  points/.initial={},
-  oral/.style={/exsh/points=oral},oral/.value forbidden,
-  inplace/.initial={false},
-  sample/.initial={false},
-  filenameasexercisename/.initial={false},
-  pointsfloatright/.initial={false},
-  bonus/.initial={false},
-  nobonus/.style={/exsh/bonus=false},nobonus/.value forbidden,
-  abbrev/.initial={false},
-  noabbrev/.style={/exsh/abbrev=false},noabbrev/.value forbidden,
-  pointsinfo/.initial={},
-  optional/.style={/exsh/pointsinfo=\ifexsh@abbrev%
-       \pgfkeysvalueof{/exsh/strings/optional abbrev}%
-    \else%
-       \pgfkeysvalueof{/exsh/strings/optional}%
-    \fi},
-  optional/.value forbidden,
-  exercisemark/.initial={},
-  difficult/.style={/exsh/exercisemark=*},difficult/.value forbidden,
-  savetasks/.initial=false,
-}
-%beamer specific options
-\ifexsh@beamer
-\pgfkeys{exsh,
-}
-\fi
-\pgfkeys{exsh,
-  %
-  % translatable strings
-  strings/sheet/.initial={},
-  strings/sheets/.initial={},
-  strings/solutions/.initial={},
-  strings/solutionsby/.initial={},
-  strings/gradingguide/.initial={},
-  strings/exercise/.initial={},
-  strings/solution/.initial={},
-  strings/idea/.initial={},
-  strings/hint/.initial={},
-  strings/remark/.initial={},
-  strings/oral/.initial={},
-  strings/oral abbrev/.initial={},
-  strings/point/.initial={},
-  strings/points/.initial={},
-  strings/points abbrev/.initial={},
-  strings/bonus point/.initial={},
-  strings/bonus points/.initial={},
-  strings/bonus points abbrev/.initial={},
-  strings/optional/.initial={},
-  strings/optional abbrev/.initial={},
-  %
-  % languages: predifined string sets
-  language/.is choice,
-  language/german/.code={%
-    \exsh@deforprovide{/exsh/strings/sheet}       {\"Ubungsblatt}%
-    \exsh@deforprovide{/exsh/strings/sheets}      {\"Ubungsbl\"atter}%
-    \exsh@deforprovide{/exsh/strings/solutions}   {L\"osungsvorschl\"age}%
-    \exsh@deforprovide{/exsh/strings/solutionsby} {L\"osungen von}%
-    \exsh@deforprovide{/exsh/strings/gradingguide}{Bepunktung}%
-    \exsh@deforprovide{/exsh/strings/exercise}    {Aufgabe}%
-    \exsh@deforprovide{/exsh/strings/solution}    {L\"osung}%
-    \exsh@deforprovide{/exsh/strings/idea}        {L\"osungsidee}%
-    \exsh@deforprovide{/exsh/strings/hint}        {Hinweis}%
-    \exsh@deforprovide{/exsh/strings/remark}      {Bemerkung}%
-    \exsh@deforprovide{/exsh/strings/oral}        {m\"undlich}%
-    \exsh@deforprovide{/exsh/strings/oral abbrev} {mdl.}%
-    \exsh@deforprovide{/exsh/strings/point}       {Punkt}%
-    \exsh@deforprovide{/exsh/strings/points}      {Punkte}%
-    \exsh@deforprovide{/exsh/strings/points abbrev}{P.}%
-    \exsh@deforprovide{/exsh/strings/bonus point} {Zusatzpunkt}%
-    \exsh@deforprovide{/exsh/strings/bonus points}{Zusatzpunkte}%
-    \exsh@deforprovide{/exsh/strings/bonus points abbrev}{ZP.}%
-    \exsh@deforprovide{/exsh/strings/optional}    {optional}%
-    \exsh@deforprovide{/exsh/strings/optional abbrev} {opt.}%
-  },language/german/.value forbidden,
-  language/ngerman/.style={/exsh/language/german=#1},
-  language/english/.code={%
-    \exsh@deforprovide{/exsh/strings/sheet}       {Exercise Sheet}%
-    \exsh@deforprovide{/exsh/strings/sheets}      {Exercise Sheets}%
-    \exsh@deforprovide{/exsh/strings/solutions}   {Suggested Solutions}%
-    \exsh@deforprovide{/exsh/strings/solutionsby} {Solutions by}%
-    \exsh@deforprovide{/exsh/strings/gradingguide}{Grading guideline}%
-    \exsh@deforprovide{/exsh/strings/exercise}    {Exercise}%
-    \exsh@deforprovide{/exsh/strings/solution}    {Solution}%
-    \exsh@deforprovide{/exsh/strings/idea}        {Idea for solution}%
-    \exsh@deforprovide{/exsh/strings/hint}        {Hint}%
-    \exsh@deforprovide{/exsh/strings/remark}      {Remark}%
-    \exsh@deforprovide{/exsh/strings/oral}        {oral}%
-    \exsh@deforprovide{/exsh/strings/oral abbrev} {oral}%
-    \exsh@deforprovide{/exsh/strings/point}       {point}%
-    \exsh@deforprovide{/exsh/strings/points}      {points}%
-    \exsh@deforprovide{/exsh/strings/points abbrev}{p.}%
-    \exsh@deforprovide{/exsh/strings/bonus point} {bonus point}%
-    \exsh@deforprovide{/exsh/strings/bonus points}{bonus points}%
-    \exsh@deforprovide{/exsh/strings/bonus points abbrev}{b.p.}%
-    \exsh@deforprovide{/exsh/strings/optional}    {optional}%
-    \exsh@deforprovide{/exsh/strings/optional abbrev} {opt.}%
-  },language/english/.value forbidden,
-  language/.unknown/.code={%
-    \PackageWarning{exercisesheets-beamer}{Unknown language \pgfkeyscurrentname.
-      Defaulting to English.}{}%
-    \pgfkeys{/exsh/language=english}%
-  },
-  % 
-  % alternate strings
-  idea/.style={/exsh/strings/solution=\pgfkeysvalueof{/exsh/strings/idea}},
-  remark/.style={/exsh/strings/hint=\pgfkeysvalueof{/exsh/strings/remark}},
-  %
-  % hooks
-  every sheet/.code={},
-  every exercise/.code={},
-  every solution/.code={},
-  every hint/.code={},
-  %
-  % font specifications
-  sheet header font/.initial=\normalfont\normalsize,
-  subject font/.initial=\scshape,
-  author font/.initial=\scshape,
-  semester font/.initial={},
-  date font/.initial={},
-  solutionsby font/.initial=\itshape,
-  sheet note font/.initial=\itshape\bfseries,
-  sheet title font/.initial=\Large\bfseries,
-  exercise title font/.initial=\bfseries,
-  points font/.initial=\itshape,
-  main task font/.initial={},
-  subtask font/.initial={},
-  task restate font/.initial=\itshape,
-  hint font/.initial={},
-  hint title font/.initial=\itshape,
-  solution font/.initial={},
-  solution title font/.initial=\bfseries,
-  grading guide font/.initial=\itshape,
-  todo marker font/.initial=\ifdef{\color}{\color{red}}{}\bfseries,
-  %
-  % skip values
-  below slide headline skip/.initial={0mm},
-  above sheet title skip/.initial={4ex},
-  above sheet note skip/.initial={.7ex},
-  above solutionsby skip/.initial={1ex},
-  below sheet header skip/.initial={4ex plus 1ex minus .5ex},
-  above exercise skip/.initial={3ex plus 1ex minus .5em},
-  below exercise title skip/.initial={\parskip},
-  above solution skip/.initial={1ex},
-  above hint skip/.initial={1ex},
-  %
-  % page handling
-  sheet start page action/.initial={\clearpage},
-  sheet end page action/.initial={\clearpage},
-  %
-  % conditionals
-  ifsolutions/.code 2 args={\ifsolutions{\pgfkeysalso{#1}}{\pgfkeysalso{#2}}},
-  iforalsolutions/.code 2 args={\iforalsolutions{\pgfkeysalso{#1}}{\pgfkeysalso{#2}}},
-  ifnonoralsolutions/.code 2 args={\ifnonoralsolutions{\pgfkeysalso{#1}}{\pgfkeysalso{#2}}},
-}
-
-% default values
-\pgfkeys{exsh,solutions=false,all}
-
-% process package options
-\@expandtwoargs\pgfqkeys{/exsh}{\csname opt@exercisesheets-beamer.sty\endcsname}
-
-% mark options as processed
-\expandafter\undef\csname opt@exercisesheets-beamer.sty\endcsname
-
-% allow further keys to be set
-\def\exshset#1{\pgfkeys{exsh,#1}}
-
-\ifexsh@beamer
-\define@key{beamerframe}{t}[true]{% top
-  \beamer@frametopskip=-2pt\relax%
-  \beamer@framebottomskip=0pt plus 1fill\relax%
-  \beamer@frametopskipautobreak=\beamer@frametopskip\relax%
-  \beamer@framebottomskipautobreak=\beamer@framebottomskip\relax%
-}
-\fi
-
-% automatic language selection
-\AfterEndPreamble{%
-  \exsh@provideonlytrue
-  \ifdef{\bbl@main@language}{%
-    \pgfkeys{/exsh/language=\bbl@main@language}%
-  }{%
-    \pgfkeys{/exsh/language=english}%
-  }%
-  \exsh@provideonlyfalse
-}%
-
-% range checks
-\newif\ifexsh@isinrange
-\newif\ifexsh@singularrange
-\def\exsh@checkrange#1{%
-  \edef\exsh@range@entry{#1}%
-  \def\exsh@range@curstart{}%
-  \exsh@isinrangefalse
-  \exsh@singularrangetrue
-  \pgfkeysgetvalue{/exsh/only}{\exsh@temp}%
-  \ifthenelse{\equal{-}{\exsh@temp}}{%
-    \exsh@isinrangetrue
-    \ifnumequal{\exsh@lastsheet}{1}{%
-      \exsh@singularrangetrue
-    }{%
-      \exsh@singularrangefalse
-    }%
-  }{%
-    \expandafter\exsh@range@parsestart\exsh@temp\exsh@range@end
-  }%
-}
-\def\exsh@range@parsestart#1{%
-  \ifstrequal{#1}{,}{%
-    \exsh@singularrangefalse
-    \ifdefstring{\exsh@range@curstart}{last}{%
-      \let\exsh@range@curstart\exsh@lastsheet
-    }{}%
-    \ifdefequal{\exsh@range@entry}{\exsh@range@curstart}{%
-      \exsh@isinrangetrue
-    }{}%
-    \def\exsh@range@curstart{}%
-    \exsh@range@parsestart
-  }{%
-    \ifstrequal{#1}{\exsh@range@end}{%
-      \ifdefstring{\exsh@range@curstart}{last}{%
-        \let\exsh@range@curstart\exsh@lastsheet
-      }{}%
-      \ifdefequal{\exsh@range@entry}{\exsh@range@curstart}{%
-        \exsh@isinrangetrue
-      }{}%
-    }{%
-      \ifdefequal{#1}{-}{%
-        \exsh@singularrangefalse
-        \ifdefstring{\exsh@range@curstart}{}{%
-          \def\exsh@range@curstart{0}%
-        }{}%
-        \ifdefstring{\exsh@range@curstart}{last}{%
-          \let\exsh@range@curstart\exsh@lastsheet
-        }{}%
-        \def\exsh@range@curend{}%
-        \exsh@range@parseend
-      }{%
-        \appto{\exsh@range@curstart}{#1}%
-        \exsh@range@parsestart
-      }%
-    }%
-  }%
-}
-\def\exsh@range@parseend#1{%
-  \ifstrequal{#1}{,}{%
-    \ifdefstring{\exsh@range@curend}{last}{%
-      \def\exsh@range@curend{10000}%
-    }{}%
-    \ifdefstring{\exsh@range@curend}{}{
-      \def\exsh@range@curend{10000}%
-    }{}%
-    \ifthenelse{\NOT \(\exsh@range@curstart > \exsh@range@entry
-      \OR \exsh@range@entry > \exsh@range@curend\)}{%
-      \exsh@isinrangetrue
-    }{}%
-    \def\exsh@range@curstart{}%
-    \exsh@range@parsestart
-  }{%
-    \ifstrequal{#1}{\exsh@range@end}{%
-      \ifdefstring{\exsh@range@curend}{last}{%
-        \def\exsh@range@curend{10000}%
-      }{}%
-      \ifdefstring{\exsh@range@curend}{}{
-        \def\exsh@range@curend{10000}%
-      }{}%
-      \ifthenelse{\NOT \(\exsh@range@curstart > \exsh@range@entry
-        \OR \exsh@range@entry > \exsh@range@curend\)}{%
-        \exsh@isinrangetrue
-      }{%
-      }%      
-    }{%
-      \appto{\exsh@range@curend}{#1}%
-      \exsh@range@parseend
-    }%
-  }%
-}
-
-% remember last sheet (for range checks)
-\def\exsh@lastsheet{0}% to be overridden in aux file
-\AtEndDocument{%
-  \immediate\write\@auxout{\string\gdef\string\exsh@lastsheet{\arabic{part}}}%
-}
-
-\numberwithin{page}{part}
-\renewcommand{\thepage}{\arabic{page}}%changed for every sheet
-\setcounter{secnumdepth}{-1}
-
-\AfterPackage*{hyperref}{%
-  % make PDF destinations unique:
-  \def\theHsection{\arabic{sheetid}.\arabic{section}}%
-  \def\theHpage{\arabic{sheetid}-\arabic{page}}%
-  %
-  % open bookmarks when typesetting a single sheet
-  \AtEndPreamble{%
-    \exsh@checkrange{0}%
-    \ifexsh@singularrange\hypersetup{bookmarksopen}\fi
-  }%
-}
-
-% automatic title selection
-\let\exsh@title\relax
-\let\exsh@title@new\relax
-\def\exsh@write@title#1{%
-  \xdef\exsh@title@new{\expandonce #1}%
-  \protected@write\@auxout{}{\string\gdef\string\exsh@title{\expandonce\exsh@title@new}}%
-}
-\AfterEndDocument{%
-  \ifthenelse{\equal{\exsh@title}{\exsh@title@new}}{}{%
-    \@latex@warning@no@line{Label(s) may have changed.
-      Rerun to get cross-references right}%
-  }%
-}
-\AfterEndPreamble{%
-  \exsh@checkrange{0}%
-  \ifexsh@singularrange\else
-    \pgfkeysgetvalue{/exsh/strings/sheets}{\exsh@tmp}%
-    \exsh@write@title{\exsh@tmp}%
-  \fi
-}
-
-\AtBeginDocument{%
-  \ifexsh@solutions
-    \title{\exsh@title: \pgfkeysvalueof{/exsh/strings/solutions}}%
-  \else
-    \title{\exsh@title}
-  \fi
-}
-\newcounter{sheetid}% only used to disambiguate hyperref labels
-\newenvironment{sheet}[1][]{%
-  \pgfkeys{exsh,every sheet,#1}%
-  \pgfkeysvalueof{/exsh/sheet start page action}%
-  \stepcounter{sheetid}%
-  \ifthenelse{\equal{}{\pgfkeysvalueof{/exsh/title}}}{%
-    \numdef\exsh@tmp{\value{part}+1}%
-    \edef\exsh@temp{\expandonce{\pgfkeysvalueof{/exsh/strings/sheet}}\noexpand~\exsh@tmp}%
-    \pgfkeys{/exsh/title/.expand once={\exsh@temp}}%
-    \def\thepage{\arabic{part}-\arabic{page}}%
-  }{%
-    \def\thepage{\arabic{page}}%
-  }%
-  \ifexsh@exnumsheet
-    \edef\exsh@exnumstore{\arabic{section}}
-    \setcounter{section}{0}%
-  \fi
-  \numdef\exsh@tmp{\value{part}+1}%
-  \exsh@checkrange{\exsh@tmp}%
-  \ifexsh@isinrange
-    \ifexsh@singularrange
-      \pgfkeysgetvalue{/exsh/title}{\exsh@temp}%
-      \exsh@write@title{\exsh@temp}%
-    \fi
-    \exsh@sheethead
-  \else
-    \refstepcounter{part}%
-    \def\exsh@skipwhat{sheet}\expandafter\exsh@skipstuff
-  \fi
-}{%
-  \par
-  \begingroup
-  \ifnum\value{page}=1\thispagestyle{empty}\fi
-  \pgfkeysvalueof{/exsh/sheet end page action}%
-  \endgroup
-  \ifexsh@exnumsheet
-    \setcounter{section}{\exsh@exnumstore}%
-  \fi
-}
-\listadd{\exsh@enums}{enumerate}
-\listadd{\exsh@enums}{compactenum}
-\listadd{\exsh@enums}{asparaenum}
-\listadd{\exsh@enums}{inparaenum}
-\listadd{\exsh@nonenums}{itemize}
-\listadd{\exsh@nonenums}{compactitem}
-\listadd{\exsh@nonenums}{asparaitem}
-\listadd{\exsh@nonenums}{inparaitem}
-\listadd{\exsh@nonenums}{description}
-\listadd{\exsh@nonenums}{compactdesc}
-\listadd{\exsh@nonenums}{asparadesc}
-\listadd{\exsh@nonenums}{inparadesc}
-\listadd{\exsh@nonenums}{asparablank}
-\listadd{\exsh@nonenums}{inparablank}
-\listadd{\exsh@nonenums}{list}
-\ifexsh@beamer
-  \let\exsh@hyper@itemtrue\relax
-\else
-  \def\exsh@hyper@itemtrue{\@hyper@itemtrue}
-\fi
-\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}}}}}}}}%
-}
-\let\exshskipcontinue\exsh@skipstuff
-\long\def\exsh@skipcustomstuff#1{\exshskipcontinue}
-\def\exsh@skipstuff@end#1{%
-  \expandafter\ifstrequal\expandafter{\exsh@skipwhat}{#1}{%
-    \expandafter\end\expandafter{\exsh@skipwhat}%
-    \let\exsh@skipwhat\relax%
-  }{
-    \endgroup\exsh@skipstuff%
-  }%
-}
-\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
-    }{}%
-    \exsh@skipstuff
-  }%
-}
-\def\exsh@skipstuff@beginenum{%
-  \ifnum\@enumdepth>\thr@@
-    \@toodeep
-  \else
-    \advance\@enumdepth\@ne
-    \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
-    \setcounter{\@enumctr}{0}%
-  \fi
-  \@ifundefined{@enumlabel@}{%
-    \exsh@skipstuff
-  }{%
-    \@ifnextchar[{\@enumlabel@{\exsh@skipstuff}[}{\exsh@skipstuff}%
-  }%
-}
-\def\exsh@skipstuff@label#1{%
-  % Locally modify \protected@write to use \immediate\write instead.
-  % This is needed to include labels after the last shipout in the aux file.
-  \begingroup
-  \def\protected@write##1##2##3{%
-    \begingroup
-    \let\protect\@unexpandable@protect
-    \immediate\write##1{##3}%
-    \endgroup
-  }%
-  \label{#1}%
-  \endgroup
-  \exsh@skipstuff
-}
-\def\exsh@skipstuff@input#1{%
-  \CatchFileDef{\exsh@inputfilecontent}{#1}{}%
-  \currfile@push
-  \currfile@set{#1}%
-  \expandafter\exsh@skipstuff\exsh@inputfilecontent\exsh@skipstuff@endfile
-}
-
-\def\exsh@skipstuff@incex{%
-  \@ifstar\exsh@skipstuff@incex@@\exsh@skipstuff@incex@%
-}
-
-\newcommand{\exsh@skipstuff@incex@}[2][]{%
-\exsh@skipstuff\input{%
-  \ifdefvoid{\exsh@exercisespath}{}{\exsh@exercisespath/}#2}%
-}
-
-\newcommand{\exsh@skipstuff@incex@@}[2][]{%
-\refstepcounter{section}
-\exsh@autolabel{ex:#2}
-\exsh@skipstuff
-}
-
-\ifexsh@beamer
-\def\exsh@sheethead{%
-  \pgfkeysgetvalue{/exsh/title}{\exsh@tmp}%
-  \ifexsh@solutions
-    \expandafter\edef\expandafter\exsh@tmp{\expandonce\exsh@tmp:\noexpand~\pgfkeysvalueof{/exsh/strings/solutions}}%
-  \fi
-  \refstepcounter{part}%
-  \begin{frame}
-  \begin{block}{}
-    \centering\Large\exsh@tmp
-  \end{block}
-    \begingroup
-      \pgfkeysvalueof{/exsh/sheet header font}%
-      \ifexsh@solutions%
-        \ifdefvoid{\exsh@solutionsby}{}{%
-          \begingroup
-            \begin{block}{}
-              \pgfkeysvalueof{/exsh/solutionsby font}%
-              \vskip\pgfkeysvalueof{/exsh/above solutionsby skip}%
-              \relax%
-              \pgfkeysvalueof{/exsh/strings/solutionsby}%
-              ~\exsh@solutionsby\\\unskip%
-            \end{block}%
-          \endgroup
-        }%
-      \else
-      \fi
-      \ifthenelse{\equal{}{\pgfkeysvalueof{/exsh/note}}}{%
-      }{%
-        \ifbool{exsh@samplesolutions}{}{%
-          \begingroup
-            \begin{block}{}
-              \pgfkeysvalueof{/exsh/sheet note font}%
-              \vskip\pgfkeysvalueof{/exsh/above sheet note skip}\relax
-              \pgfkeysvalueof{/exsh/note}\\\unskip%
-            \end{block}%
-          \endgroup
-        }%
-      }%
-    \endgroup
-%   \stepcounter{page}%
-  \end{frame}
-}
-\else
-\def\exsh@sheethead{%
-  \pgfkeysgetvalue{/exsh/title}{\exsh@tmp}%
-  \ifexsh@solutions
-    \expandafter\edef\expandafter\exsh@tmp{\expandonce\exsh@tmp:\noexpand~\pgfkeysvalueof{/exsh/strings/solutions}}%
-  \fi
-  \refstepcounter{part}%
-  \part[\pgfkeysvalueof{/exsh/title}]{\normalsize
-    \pgfkeysvalueof{/exsh/sheet header font}\centering%
-    \begingroup\raggedright%
-      {\pgfkeysvalueof{/exsh/subject font}\pgfkeysvalueof{/exsh/subject}}\hfill
-      {\pgfkeysvalueof{/exsh/semester font}\pgfkeysvalueof{/exsh/semester}}\\
-      {\pgfkeysvalueof{/exsh/author font}\exsh@author}\hfill
-      {\pgfkeysvalueof{/exsh/date font}\pgfkeysvalueof{/exsh/date}}\\
-      \vskip\pgfkeysvalueof{/exsh/above sheet title skip}\relax%
-    \endgroup
-    \begingroup
-      \pgfkeysvalueof{/exsh/sheet title font}\exsh@tmp\\\unskip
-    \endgroup
-    \begingroup
-      \pgfkeysvalueof{/exsh/sheet header font}%
-      \ifexsh@solutions%
-        \ifdefvoid{\exsh@solutionsby}{}{%
-          \begingroup
-            \pgfkeysvalueof{/exsh/solutionsby font}%
-            \vskip\pgfkeysvalueof{/exsh/above solutionsby skip}\relax
-            \pgfkeysvalueof{/exsh/strings/solutionsby}~\exsh@solutionsby\\\unskip%
-          \endgroup
-        }%
-      \else
-      \fi
-      \ifthenelse{\equal{}{\pgfkeysvalueof{/exsh/note}}}{%
-      }{%
-        \ifbool{exsh@samplesolutions}{}{%
-          \begingroup
-            \pgfkeysvalueof{/exsh/sheet note font}%
-            \vskip\pgfkeysvalueof{/exsh/above sheet note skip}\relax
-            \pgfkeysvalueof{/exsh/note}\\\unskip%
-          \endgroup
-        }%
-      }%
-    \endgroup
-  }%
-  \unskip
-  \vskip\pgfkeysvalueof{/exsh/below sheet header skip}\relax
-  \stepcounter{page}%
-}
-\fi
-
-\ifdef{\othersectionslevelsformat}{%
-  \renewcommand{\othersectionlevelsformat}[1]{%
-    \ifstrequal{#1}{section}%
-    {}%
-    {\csname the#1\endcsname\autodot\enskip}}%
-}{}
-
-%Do nout use \let here as \label may change before its use
-\def\exsh@autolabel{\label}
-
-\newcounter{exsh@pts@cur}
-\newcounter{exsh@ptsbonus@cur}
-\newenvironment*{exercise}[1][]{%
-  % TODO: \edef is not safe with luatex and umlauts, only fixed for "oral" for now
-  % TODO: check whether the TODO above is still relevant
-  %\edef seams to work fine with lualatex from TeXLive 2020
-  \pgfkeys{exsh,every exercise,#1,includeoverride}%
-  \ifthenelse{\equal{sum}{\pgfkeysvalueof{/exsh/points}}}{%
-    \ifcsname exsh@sumpts@\the\numexpr\arabic{section}+1\endcsname
-      \edef\exsh@sumpts{%
-        \csname exsh@sumpts@\the\numexpr\arabic{section}+1%
-        \endcsname%
-      }%
-      \edef\exsh@sumptsbonus{%
-        \csname exsh@sumptsbonus@\the\numexpr\arabic{section}+1%
-        \endcsname%
-      }%
-      \ifnumequal{\exsh@sumpts}{0}{%
-        \ifnumequal{\exsh@sumptsbonus}{0}{}{%
-          \edef\exsh@sumpts{\exsh@sumptsbonus}%
-          \exshset{bonus}%
-        }%
-      }{%
-        \ifnumequal{\exsh@sumptsbonus}{0}{}{%
-          \edef\exsh@sumpts{\exsh@sumpts+\exsh@sumptsbonus}%
-        }%
-      }%
-    \else%
-      \def\exsh@sumpts{??}%
-    \fi%
-    \exshset{points/.expanded={\exsh@sumpts}}
-    \setcounter{exsh@pts@cur}{0}
-    \setcounter{exsh@ptsbonus@cur}{0}
-    \exsh@sumuppointstrue%
-  }{%
-    \exsh@sumuppointsfalse%
-  }%
-  \ifthenelse{\equal{}{\pgfkeysvalueof{/exsh/points}}}{%
-    \def\exsh@points{}%
-    \def\exsh@shortpoints{}%
-  }{%
-    \ifthenelse{\equal{}{\pgfkeysvalueof{/exsh/points}}}{%
-      \edef\exsh@points{\pgfkeysvalueof{/exsh/pointsinfo}}%
-    }{%
-      \ifthenelse{\equal{oral}{\pgfkeysvalueof{/exsh/points}}}{%
-        \ifexsh@abbrev%
-          \pgfkeysgetvalue{/exsh/strings/oral abbrev}{\exsh@points}%
-        \else%
-          \pgfkeysgetvalue{/exsh/strings/oral}{\exsh@points}%
-        \fi%
-      }{%
-         \ifexsh@abbrev%
-            \ifexsh@bonus%
-              \edef\exsh@points{\pgfkeysvalueof{/exsh/points} \pgfkeysvalueof{/exsh/strings/bonus points abbrev}}%
-            \else%
-              \edef\exsh@points{\pgfkeysvalueof{/exsh/points} \pgfkeysvalueof{/exsh/strings/points abbrev}}%
-            \fi%
-         \else%
-          \ifthenelse{\equal{1}{\pgfkeysvalueof{/exsh/points}}}{%
-            \ifexsh@bonus%
-              \edef\exsh@points{1 \pgfkeysvalueof{/exsh/strings/bonus point}}%
-            \else%
-              \edef\exsh@points{1 \pgfkeysvalueof{/exsh/strings/point}}%
-            \fi%
-          }{%
-            \ifexsh@bonus%
-              \edef\exsh@points{\pgfkeysvalueof{/exsh/points} \pgfkeysvalueof{/exsh/strings/bonus points}}%
-            \else%
-              \edef\exsh@points{\pgfkeysvalueof{/exsh/points} \pgfkeysvalueof{/exsh/strings/points}}%
-            \fi%
-           }%
-         \fi%
-       }%
-      \ifthenelse{\equal{}{\pgfkeysvalueof{/exsh/pointsinfo}}}{}{%
-        \edef\exsh@points{\expandonce\exsh@points, \pgfkeysvalueof{/exsh/pointsinfo}}%
-      }%
-    }%
-    \ifthenelse{\equal{}{\exsh@points}}{%
-      \def\exsh@shortpoints{}%
-    }{%
-      \edef\exsh@shortpoints{ (\expandonce\exsh@points)}%
-    }%
-    \preto\exsh@points{\enskip\hfill\bgroup%
-      \pgfkeysvalueof{/exsh/points font}}%
-    \appto\exsh@points{\egroup}%
-  }%
-  \ifthenelse{\equal{}{\pgfkeysvalueof{/exsh/firstline}}}{%
-    \def\exsh@firstline{}%
-  }{%
-    \def\exsh@firstline{\pgfkeysvalueof{/exsh/firstline}}%
-    \preto\exsh@firstline{\quad\bgroup\normalfont\normalsize}%
-    \appto\exsh@firstline{\egroup}%
-  }%
-  \ifthenelse{\equal{}{\pgfkeysvalueof{/exsh/name}}}{%
-    \def\exsh@exname{}%
-    \def\exsh@shortexname{}%
-  }{%
-    \edef\exsh@exname{\space(\pgfkeysvalueof{/exsh/name})}%
-    \edef\exsh@shortexname{:\space\pgfkeysvalueof{/exsh/name}}%
-  }%
-  \refstepcounter{section}%
-  \edef\exsh@tmp{[\pgfkeysvalueof{/exsh/strings/exercise} \arabic{section}\exsh@shortexname\expandonce\exsh@shortpoints]}%
-  \ifbool{exsh@samplesolutions}{\ifbool{exsh@sample}{\exsh@hidefalse}{\exsh@hidetrue}}{\exsh@hidefalse}%
-  \ifbool{exsh@hide}{%
-    \def\exsh@skipwhat{exercise}\exsh@skipstuff%
-  }{%
-    \expandafter\exsh@startsection\exsh@tmp{\noindent%
-      \hbox to 0pt{\hss\pgfkeysvalueof{/exsh/exercisemark}}%
-      \pgfkeysvalueof{/exsh/strings/exercise}~\arabic{section}\exsh@exname\exsh@firstline\expandonce\exsh@points}%
-    \unskip\vskip\pgfkeysvalueof{/exsh/below exercise title skip}\relax
-    \@afterindentfalse
-    % 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}}}%
-    % Use \leavevmode to ensure proper distances above environments that start
-    % with a new \par. Make sure that a \label does not mess up the layout.
-    \@ifnextchar\label{\exsh@label}{\leavevmode\ignorespaces}%
-  }%
-}{%
-  %before writing point sums check that we actually computed them
-  \ifexsh@sumuppoints%
-    \immediate\write\@auxout{
-      \string\expandafter\gdef%
-      \detokenize{\csname} exsh@sumpts@\arabic{section}\endcsname{%
-        \arabic{exsh@pts@cur}%
-      }%
-      \string\expandafter\gdef%
-      \detokenize{\csname} exsh@sumptsbonus@\arabic{section}\endcsname{%
-        \arabic{exsh@ptsbonus@cur}%
-      }%
-    }%
-  \fi
-  \ifexsh@beamer\clearpage\fi
-}
-\newcommand{\exsh@label}[2]{#1{#2}\leavevmode\ignorespaces}
-
-\ifexsh@beamer
-\newcommand{\exsh@startsection}[2][]{%
-   \newpage
-%   \begin{block}{}
-%   \pgfkeysvalueof{/exsh/exercise title font}{#2}%
-%   \end{block}
-  \ifbool{exsh@beameruseblocks}{%
-    \begingroup
-    \usebeamercolor{block title}
-    \setbeamercolor{block body}{bg=bg,fg=fg}
-    \block{}{\pgfkeysvalueof{/exsh/exercise title font}{#2}}%
-      \endblock
-    \endgroup
-  }{
-    \begin{beamercolorbox}[rounded=true,wd={\textwidth}]%
-      {block title}
-      \pgfkeysvalueof{/exsh/exercise title font}{#2}
-    \end{beamercolorbox}
-  }
-  \ifexsh@patchenumerate
-    \setbeamertemplate{enumerate items}{\insertenumlabel}
-    \renewcommand{\insertenumlabel}{
-      \ifnum\@enumdepth=1
-        \alph{enumi})
-      \else\ifnum\@enumdepth=2
-        \arabic{enumii}.
-      \else
-        \roman{enumiii}
-      \fi\fi
-    }
-  \fi
-}%
-\else
-\newcommand{\exsh@startsection}[2][]{%
-  \@startsection{section}{1}{\z@}%
-  {\pgfkeysvalueof{/exsh/above exercise skip}}%
-  {1em}% afterskip corrected below
-  {\pgfkeysvalueof{/exsh/exercise title font}}%
-  [#1]{#2}%
-}%
-\fi
-
-
-\exshset{includeoverride/.style={}}
-\def\includeexercise{%
-  \@ifstar\exsh@includeexercise@\exsh@includeexercise%
-}
-
-\newcommand{\exsh@includeexercise}[2][]{%
-\ifbool{exsh@filenameasexercisename}{%
-  \exshset{includeoverride/.style={name={#2},#1}}%
-}{%
-  \exshset{includeoverride/.style={#1}}%
-}%
-\input{\ifdefvoid{\exsh@exercisespath}{}{\exsh@exercisespath/}#2}
-\exshset{includeoverride/.style={}}
-}
-
-\newcommand{\exsh@includeexercise@}[2][]{%
-\ifbool{exsh@filenameasexercisename}{%
-  \exshset{includeoverride/.style={name={#2},#1}}%
-}{%
-  \exshset{includeoverride/.style={#1}}%
-}%
-\begingroup
-%auto labelling is still allowed, but other labels are forbidden
-%here we may use \let as the definition is close to its use
-\let\exsh@autolabel\label
-\def\label##1{%
-  \PackageError{exercisesheets-beamer}{\string\label{##1}\space
-  inside \string\includeexercise*}{}%
-}
-\input{\ifdefvoid{\exsh@exercisespath}{}{\exsh@exercisespath/}#2}
-\endgroup
-\exshset{includeoverride/.style={}}
-}
-
-\AfterPackage*{varioref}{
-  \labelformat{section}{\pgfkeysvalueof{/exsh/strings/exercise}~\arabic{section}}
-}
-
-\ifexsh@patchenumerate
-  \AfterPackage*{varioref}{
-    \labelformat{enumi}{\arabic{section}.\alph{enumi}}
-  }
-  \AfterPackage*{paralist}{
-    \setdefaultenum{(a)}{(1)}{i.}{A.}
-  }
-  \AfterPackage*{enumitem}{
-    \setenumerate[1]{label=(\alph*)}
-    \setenumerate[2]{label=(\arabic*)}
-    \setenumerate[3]{label=\roman*.}
-    \setenumerate[4]{label=\Alph.}
-  }
-  \def\theHenumi{enumi.\arabic{part}.\arabic{section}.\arabic{enumi}}
-  \AtEndPreamble{%
-    \@ifpackageloaded{paralist}{}{%
-      \@ifpackageloaded{enumitem}{}{%
-        \apptocmd{\enumerate}{
-          \ifnum\@enumdepth=1%
-            \def\labelenumi{(\alph{enumi})}
-            \def\labelenumii{\arabic{enumii}.}
-            \def\labelenumiii{\roman{enumiii}.}
-          \fi
-        }{}{}%
-      }%
-    }%
-  }%
-\fi
-
-% reset equation numbering for each exercise
-\@addtoreset{equation}{section}
-
-\long\def\exsh@savemaintask#1{%
-  \global\def\exsh@restatetaskmain{#1}%
-  #1%
-}
-
-\newenvironment{maintask}[1][]{%
-  \pgfkeys{exsh,#1}%
-  \pgfkeysvalueof{/exsh/main task font}%
-  \ifbool{exsh@savetasks}{\Collect@Body\exsh@savemaintask}{}%
-  \ignorespaces
-}{}
-
-%we ignore everything before the frist item
-%and process everything afterwards
-\long\def\exsh@processsubtasks#1\item#2\item{%
-\ifstrequal{#2}{}{}{%
-\item #2%
-\csgdef{exsh@restatetask\arabic{enumi}}{#2}%
-\exsh@processsubtasks\item%new "frist" \item to ignore
-}%no whitespace here is crucial for end detecttion
-}
-
-\long\def\exsh@collectedsubtasks#1{
-\begin{enumerate}
-\exsh@processsubtasks#1\item\item
-\end{enumerate}%
-}
-
-\def\exsh@subtaskenv{enumerate}
-\def\exsh@subtaskitm{item}
-\def\exsh@subtaskctr{enumi}
-\newenvironment{subtasks}[1][]{%
-  \pgfkeys{exsh,#1}%
-  \begin{\exsh@subtaskenv}
-  \ignorespaces
-}{
-  \end{\exsh@subtaskenv}%
-}
-
-\newcommand{\subtask}[2][]{%
-  \begingroup
-  \pgfkeys{exsh,#1}%
-  \csname\exsh@subtaskitm\endcsname%
-    {\pgfkeysvalueof{/exsh/subtask font} #2}%
-  \ifbool{exsh@savetasks}{%
-    \csgdef{exsh@restatetask\arabic{\exsh@subtaskctr}}{#2}%
-  }{}%
-  \endgroup
-}
-
-\newcommand{\restatetask}[1][main]{%
-  {\pgfkeysvalueof{/exsh/task restate font}%
-  \csname exsh@restatetask#1\endcsname}%
-}
-
-\newenvironment{hint}[1][]{%
-  \par
-  \pgfkeys{exsh,every hint,#1,hint font}%
-  \vskip\pgfkeysvalueof{/exsh/above hint skip}\relax\noindent
-  {\pgfkeysvalueof{/exsh/hint title font}\pgfkeysvalueof{/exsh/strings/hint}:}~\ignorespaces
-}{%
-  \par
-}
-\newenvironment{hint*}[1][]{%
-  \pgfkeys{exsh,every hint,#1,hint font}%
-  ({\pgfkeysvalueof{/exsh/hint title font}\pgfkeysvalueof{/exsh/strings/hint}:}\space%
-}{%
-  \unskip)%
-}
-
-
-\ifexsh@beamer
-  \let\exsh@postsolutionclear\clearpage
-\else
-  \let\exsh@postsolutionclear\par
-\fi
-\providecommand{\solution}{}
-\renewenvironment{solution}[1][]{%
-  \pgfkeys{exsh,every solution,#1,solution font}%
-  \ifthenelse{\equal{oral}{\pgfkeysvalueof{/exsh/points}}}{%
-    \ifbool{exsh@oralsolutions}{%
-      \let\next\exsh@startsolution
-    }{%
-      \let\next\exsh@skipsolution
-    }%
-  }{%
-    \ifbool{exsh@nonoralsolutions}{%
-      \let\next\exsh@startsolution
-    }{%
-      \let\next\exsh@skipsolution
-    }%
-  }%
-  \ifbool{exsh@forcesample}{%
-    \ifbool{exsh@samplesolutions}{%
-      \let\next\exsh@startsolution
-    }{}%
-  }{}%
-  \ifbool{exsh@beamersolution}{%
-    \let\next\exsh@skipsolution
-  }{}%
-  \next
-}{%
-  \ifbool{exsh@beamersolution}{}{%
-    \ifthenelse{\equal{oral}{\pgfkeysvalueof{/exsh/points}}}{%
-      \ifbool{exsh@oralsolutions}{\exsh@postsolutionclear}{}%
-    }{%
-      \ifbool{exsh@nonoralsolutions}{\exsh@postsolutionclear}{}%
-    }%
-  }%
-}
-
-\def\exsh@solutiontitle#1{
-  \ifbool{exsh@beameruseblocks}{%
-    \begin{alertblock}{}%
-    \pgfkeysvalueof{/exsh/solution title font}%
-      \pgfkeysvalueof{/exsh/strings/solution} %
-      (\pgfkeysvalueof{/exsh/strings/exercise} \arabic{section}%
-        \ifnum\@enumdepth>0\alph{enumi}\fi)%
-    \end{alertblock}
-  }{
-    \begin{beamercolorbox}[rounded=true,wd={#1}]%
-        {block title alerted}
-      \pgfkeysvalueof{/exsh/solution title font}%
-      \pgfkeysvalueof{/exsh/strings/solution} %
-      (\pgfkeysvalueof{/exsh/strings/exercise} \arabic{section}%
-        \ifnum\@enumdepth>0\alph{enumi}\fi)%
-    \end{beamercolorbox}
-  }
-}
-\newcommand{\solutiontitle}[1][\linewidth]{
-  \ifbool{exsh@defersolutiontitle}{%
-    \ifhmode \linebreak\fi\exsh@solutiontitle{#1}
-  }{}%
-}
-
-
-\long\def\exsh@processframes#1\newframe{%
-\ifstrequal{#1}{}{}{%
-\clearpage
-\begin{frame}[t]
-  \solutiontitle[\textwidth]
-  #1
-\end{frame}%
-\exsh@processframes%
-}%no whitespace here is crucial for end detecttion
-}
-
-
-\long\def\exsh@collectedframe#1{
-\exsh@processframes#1\newframe\newframe
-}
-
-
-
-\def\exsh@startsolution{%
-  \ifnum\@enumdepth=0
-    \clearpage
-  \fi
-%   \usebeamercolor{block title alerted}
-%   \setbeamercolor{block body}{bg=bg,fg=fg}
-%   \block{}
-%     \pgfkeysvalueof{/exsh/solution title font}%
-%     \pgfkeysvalueof{/exsh/strings/solution} %
-%     (\pgfkeysvalueof{/exsh/strings/exercise} \arabic{section}%
-%     \alph{enumi})%
-%   \endblock
-  \ifbool{exsh@framed}{\exsh@defersolutiontitletrue}{}
-  \ifbool{exsh@defersolutiontitle}{}{%
-    \ifhmode \linebreak\fi
-    \exsh@solutiontitle{\linewidth}
-  }%
-  \ifbool{exsh@framed}{\Collect@Body\exsh@collectedframe}{}%
-}%
-
-\long\def\exsh@skipsolution#1{%
-  \ifstrequal{#1}{\end}{\exsh@endsolution}{\exsh@skipsolution}%
-}
-\def\exsh@endsolution#1{%
-  \ifstrequal{#1}{solution}{
-    \end{solution}
-  }{%
-    \ifstrequal{#1}{beamersolution}{
-      \end{beamersolution}
-    }{%
-      \exsh@skipsolution}%
-  }%
-}
-
-\newenvironment<>{beamersolution}[1][]{%
-  \pgfkeys{exsh,every solution,#1,solution font}%
-  \ifthenelse{\equal{oral}{\pgfkeysvalueof{/exsh/points}}}{%
-    \ifbool{exsh@oralsolutions}{%
-      \let\next\exsh@startsolution
-    }{%
-      \let\next\exsh@skipsolution
-    }%
-  }{%
-    \ifbool{exsh@nonoralsolutions}{%
-      \let\next\exsh@startsolution
-    }{%
-      \let\next\exsh@skipsolution
-    }%
-  }%
-  \ifbool{exsh@forcesample}{%
-    \ifbool{exsh@samplesolutions}{%
-      \let\next\exsh@startsolution
-    }{}%
-  }{}%
-  \next
-}{%
-%   \ifbool{exsh@framed}{\end{frame}}{}
-  \ifthenelse{\equal{oral}{\pgfkeysvalueof{/exsh/points}}}{%
-    \ifbool{exsh@oralsolutions}{\clearpage}{}%
-  }{%
-    \ifbool{exsh@nonoralsolutions}{\clearpage}{}%
-  }%
-}
-
-
-\newcommand{\pun}[1][]{%
-  \PackageWarning{exercisesheets}{Obsolete \string\pun[] macro used. Please use
-    something\MessageBreak like \string\points{10} or \string\points{oral} instead.}{}%
-  \exsh@subexpoints{#1}%
-}
-\newcommand{\points}[2][]{%
-  \ifthenelse{\equal{}{#2}}{}{\exshset{points=#2}}%
-  \bgroup%
-  \exshset{#1}%
-  \ifthenelse{\equal{}{\pgfkeysvalueof{/exsh/pointsinfo}}}{%
-    \def\exsh@tmp{}%
-  }{%
-    \def\exsh@tmp{, \pgfkeysvalueof{/exsh/pointsinfo}}%
-  }%
-  \ifthenelse{\equal{#2}{oral}}{%
-    \ifexsh@abbrev%
-      \exsh@subexpoints{\pgfkeysvalueof{/exsh/strings/oral abbrev}\exsh@tmp}%
-    \else%
-      \exsh@subexpoints{\pgfkeysvalueof{/exsh/strings/oral}\exsh@tmp}%
-    \fi%
-  }{%
-    \ifthenelse{\equal{#2}{}}{%
-      \exsh@subexpoints{\pgfkeysvalueof{/exsh/pointsinfo}}%
-    }{%
-      \ifexsh@abbrev%
-          \ifexsh@bonus%
-            \exsh@subexpoints{#2~\pgfkeysvalueof{/exsh/strings/bonus points abbrev}\exsh@tmp}%
-          \else%
-            \exsh@subexpoints{#2~\pgfkeysvalueof{/exsh/strings/points abbrev}\exsh@tmp}%
-          \fi%
-      \else%
-        \ifthenelse{\equal{#2}{1}}{%
-          \ifexsh@bonus%
-            \exsh@subexpoints{1~\pgfkeysvalueof{/exsh/strings/bonus point}\exsh@tmp}%
-          \else%
-            \exsh@subexpoints{1~\pgfkeysvalueof{/exsh/strings/point}\exsh@tmp}%
-          \fi%
-        }{%
-          \ifexsh@bonus%
-            \exsh@subexpoints{#2~\pgfkeysvalueof{/exsh/strings/bonus points}\exsh@tmp}%
-          \else%
-            \exsh@subexpoints{#2~\pgfkeysvalueof{/exsh/strings/points}\exsh@tmp}%
-          \fi%
-        }%
-      \fi%
-      \ifexsh@sumuppoints%
-        \ifexsh@bonus%
-          \addtocounter{exsh@ptsbonus@cur}{#2}
-        \else%
-          \addtocounter{exsh@pts@cur}{#2}
-        \fi%
-      \fi%
-    }%
-  }%
-  \egroup
-  \ignorespaces
-}
-
-\newenvironment{gradingguide}[1][]{%
-  \pgfkeys{exsh,#1,grading guide font}%
-  \ifbool{exsh@gradingguides}{%
-    \let\next\exsh@startguide
-  }{%
-    \let\next\exsh@skipguide
-  }%
-  \next
-}{}
-
-\def\exsh@startguide{\@afterindentfalse%
-  \par
-  {\parindent \z@
-    \pgfkeysvalueof{/exsh/strings/gradingguide}: }\nobreak%
-  \@afterheading
-}%
-
-\long\def\exsh@skipguide#1{%
-  \ifstrequal{#1}{\end}{\exsh@endguide}{\exsh@skipguide}%
-}
-\def\exsh@endguide#1{%
-  \ifstrequal{#1}{gradingguide}{\end{gradingguide}}{\exsh@skipguide}%
-}
-
-
-\ifluatex%
-  \ifdefined\luatextextdir
-    \def\exsh@putatend#1{%
-      \leavevmode\luatextextdir TRT\unskip{\luatextextdir TLT{\hfill~~#1}}\luatextextdir TLT}%
-  \else
-    \def\exsh@putatend#1{%
-      \leavevmode\textdir TRT\unskip{\textdir TLT{\hfill~~#1}}\textdir TLT}%
-  \fi
-\else%
-  \def\exsh@putatend#1{%
-    \TeXXeTstate=1%
-    \beginR\unskip{\beginL~~#1\endL}\hfill\beginL\TeXXeTstate=0}%
-\fi
-
-\def\exsh@leaveinplace#1{\unskip~{#1} }
-\def\exsh@insertFill#1{\unskip\nobreak\space\nobreak\hspace*{\fill}\allowbreak\hspace*{\fill}{#1}\unskip}
-
-\newcommand{\exsh@subexpoints}[1]{%
-   \ifexsh@inplace%
-     \exsh@leaveinplace{\pgfkeysvalueof{/exsh/points font}\mbox{(#1)}}%
-   \else%
-     \ifexsh@pointsfloatright% can be used directly after \item etc.
-       \exsh@putatend{\pgfkeysvalueof{/exsh/points font}\mbox{(#1)}}%
-     \else% original points macro with fill
-       \exsh@insertFill{\pgfkeysvalueof{/exsh/points font}\mbox{(#1)}}%
-     \fi%
-   \fi%
-}
-
-\newcommand{\TODO}[1][]{%
-  \ifexsh@showtodos
-    \ifmmode
-      \text{\pgfkeysvalueof{/exsh/todo marker font}TODO #1}%
-    \else
-      {\pgfkeysvalueof{/exsh/todo marker font}TODO #1}%
-    \fi
-  \fi
-  \PackageWarning{exercisesheets}{TODO marker found}%
-}
-\newcommand{\ifsolutions}[2]{%
-  \ifbool{exsh@solutions}{#1}{#2}%
-}
-
-\newcommand{\iforalsolutions}[2]{%
-  \ifbool{exsh@oralsolutions}{#1}{#2}%
-}
-\newcommand{\ifnonoralsolutions}[2]{%
-  \ifbool{exsh@nonoralsolutions}{#1}{#2}%
-}
-\newcommand{\ifsamplesolutions}[2]{%
-  \ifbool{exsh@samplesolutions}{#1}{#2}%
-}
-\newcommand{\samplehide}[1]{%
-  \ifbool{exsh@samplesolutions}{}{#1}%
-}
-
-
-\setbeamertemplate{headline}{%
-% \leavevmode%
-  \ifbool{exsh@beamerwithheadline}{%
-    \begin{beamercolorbox}[wd=\paperwidth,vmode]{frametitle}
-      \vspace{0.4em}
-      \leavevmode
-      \begingroup
-        \footnotesize%
-        \hspace*{2ex}{\pgfkeysvalueof{/exsh/subject font}%
-        \pgfkeysvalueof{/exsh/subject}} \hfill%
-        {\pgfkeysvalueof{/exsh/semester font}%
-        \pgfkeysvalueof{/exsh/semester}}\hspace{2ex}\hfil%
-        \vspace{1mm}\linebreak%
-        \hspace*{2ex}{\pgfkeysvalueof{/exsh/author font}\exsh@author}%
-        \hfill{\pgfkeysvalueof{/exsh/date font}%
-        \pgfkeysvalueof{/exsh/date}}%
-        \hspace{2ex}\hfil%\vspace{-1em}
-      \endgroup
-      \vspace{0.4em}
-    \end{beamercolorbox}%
-    \vspace*{3mm}
-    \vskip\pgfkeysvalueof{/exsh/below slide headline skip}\relax%
-  }{}%
-}
-\addtobeamertemplate{frametitle}{\vspace{-3mm}}{}
-
-\setbeamertemplate{footline}
-{%
-  \leavevmode%
-  \hbox{\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm,rightskip=.3cm]{frametitle}%
-  {\pgfkeysvalueof{/exsh/author font}\pgfkeysvalueof{/exsh/exauthor}}
-  \end{beamercolorbox}%
-  \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm,rightskip=.3cm plus1fil]{author in head/foot}%
-    \usebeamerfont{author in head/foot}
-    \inserttitle
-    \hfill\insertpagenumber
-  \end{beamercolorbox}}%
-  \vskip0pt%
-}
-
-
-\ifluatex
-  \let\exsh@dlua\directlua
-\else
-  \def\exsh@dlua#1{}
-\fi
-
-%change only some catcodes to 
-\begingroup
-\catcode`!=0
-\catcode`\@=11
-\catcode`\_=12
-\catcode`\{=12 %set those to the same value (11/12) as below! 
-\catcode`\}=12 %
-\catcode`<=1
-\catcode`>=2
-\catcode`\~=11
-\catcode`\\=11
-%% Expanded, when \catcode`\^^M=12 holds
-!global!long!def!exsh@start@Lexercise#1\end{Lexercise}< %
-  !exsh@dlua<exsh_cur_exercise=exercise ({#1})> %
-  !endgroup!end<Lexercise>%
->
-!endgroup
-
-\def\exsh@lua@catcodesBG{
-\begingroup
-\catcode`!=12
-\catcode`\$=12
-\catcode`\#=12
-\catcode`\_=12
-\catcode`\^=12
-\catcode`\&=12
-\catcode`\|=12
-\catcode`\{=12 %set those to the same value (11/12) as above! 
-\catcode`\}=12 %
-\catcode`\~=12
-\catcode`\@=11
-\catcode`\%=12
-\catcode`\^^I=12
-\catcode`\^^J=12\catcode`\^^M=12\catcode`\\=11\endlinechar-1}
-
-\newenvironment{Lexercise}{%
-  \exsh@lua@catcodesBG\exsh@start@Lexercise%
-}{%
-  \ifluatex
-    \exsh@dlua{tex.print(exsh_cur_exercise)}%
-  \else
-    Lexercise needs Lua\LaTeX!
-  \fi
-}
-
-\exsh@dlua{dofile("exsh_lexercise.lua")}
-
-- 
cgit v1.2.3

