aboutsummaryrefslogtreecommitdiff
path: root/exercisesheets.sty
diff options
context:
space:
mode:
authorFrank Fuhlbrück2015-02-25 11:09:18 +0000
committerFrank Fuhlbrück2015-02-25 11:09:18 +0000
commit480b75f8d24b14a94af33179883692805e7302af (patch)
treea244a5020d9d125b9db900886cdc8da9d407c5d0 /exercisesheets.sty
parent6221eba486cf32c461fddfe1fe6c3a7d5d3a8ba6 (diff)
downloadexercisesheets-480b75f8d24b14a94af33179883692805e7302af.tar.gz
exercisesheets-480b75f8d24b14a94af33179883692805e7302af.tar.bz2
exercisesheets-480b75f8d24b14a94af33179883692805e7302af.zip
exercisesheets.sty with new features
Diffstat (limited to 'exercisesheets.sty')
-rw-r--r--exercisesheets.sty133
1 files changed, 114 insertions, 19 deletions
diff --git a/exercisesheets.sty b/exercisesheets.sty
index 730b53d..0a53683 100644
--- a/exercisesheets.sty
+++ b/exercisesheets.sty
@@ -16,6 +16,7 @@
\RequirePackage{kvoptions}
\RequirePackage{ifthen}
+\RequirePackage{ifluatex}
\RequirePackage{amsmath}
@@ -24,6 +25,11 @@
\newif\ifexsh@solutions
\newif\ifexsh@oralsolutions
\newif\ifexsh@nonoralsolutions
+\newif\ifexsh@inplace
+\newif\ifexsh@pointsfloatright
+\newif\ifexsh@bonus
+\newif\ifexsh@abbrev
+
\pgfkeys{/exsh/.is family,/exsh,
solutions/.is choice,
solutions/true/.code=\exsh@solutionstrue\exsh@oralsolutionstrue\exsh@nonoralsolutionstrue,
@@ -34,6 +40,14 @@
only/.initial={-},
all/.style={/exsh/only={-}},all/.value forbidden,
solutionsby/.code={\def\exsh@solutionsby{#1}},solutionsby/.value required,
+ bonus/.is if=exsh@bonus,
+ bonus/.default=true,
+ inplace/.is if=exsh@inplace,
+ inplace/.default=true,
+ pointsfloatright/.is if=exsh@pointsfloatright,
+ pointsfloatright/.default=true,
+ abbrev/.is if=exsh@abbrev,
+ abbrev/.default=true,
}
% store title data for sheet headers
@@ -85,10 +99,19 @@
firstline/.initial={},
points/.initial={},
oral/.style={/exsh/points=oral},oral/.value forbidden,
- bonus/.style={/exsh/strings/points=\pgfkeysvalueof{/exsh/strings/bonus points},
- /exsh/strings/point=\pgfkeysvalueof{/exsh/strings/bonus point}},
+ inplace/.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=\pgfkeysvalueof{/exsh/strings/optional}},optional/.value forbidden,
+ 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,
%
@@ -103,11 +126,15 @@
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,
@@ -122,11 +149,15 @@
\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={%
@@ -140,11 +171,15 @@
\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}{Unknown language \pgfkeyscurrentname.
@@ -502,14 +537,34 @@
\edef\exsh@points{\pgfkeysvalueof{/exsh/pointsinfo}}%
}{%
\ifthenelse{\equal{oral}{\pgfkeysvalueof{/exsh/points}}}{%
- \edef\exsh@points{\pgfkeysvalueof{/exsh/strings/oral}}%
+ \ifexsh@abbrev%
+ \edef\exsh@points{\pgfkeysvalueof{/exsh/strings/oral abbrev}}%
+ \else%
+ \edef\exsh@points{\pgfkeysvalueof{/exsh/strings/oral}}%
+ \fi%
}{%
- \ifthenelse{\equal{1}{\pgfkeysvalueof{/exsh/points}}}{%
- \edef\exsh@points{1 \pgfkeysvalueof{/exsh/strings/point}}%
- }{%
- \edef\exsh@points{\pgfkeysvalueof{/exsh/points} \pgfkeysvalueof{/exsh/strings/points}}%
- }%
- }%
+ \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}}%
}%
@@ -635,7 +690,7 @@
}
\newcommand{\points}[2][]{%
\ifthenelse{\equal{}{#2}}{}{\exshset{points=#2}}%
- \bgroup
+ \bgroup%
\exshset{#1}%
\ifthenelse{\equal{}{\pgfkeysvalueof{/exsh/pointsinfo}}}{%
\def\exsh@tmp{}%
@@ -643,24 +698,64 @@
\def\exsh@tmp{, \pgfkeysvalueof{/exsh/pointsinfo}}%
}%
\ifthenelse{\equal{#2}{oral}}{%
- \exsh@subexpoints{\pgfkeysvalueof{/exsh/strings/oral}\exsh@tmp}%
+ \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}}%
}{%
- \ifthenelse{\equal{#2}{1}}{%
- \exsh@subexpoints{1~\pgfkeysvalueof{/exsh/strings/point}\exsh@tmp}%
- }{%
- \exsh@subexpoints{#2~\pgfkeysvalueof{/exsh/strings/points}\exsh@tmp}%
- }%
+ \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
}%
}%
\egroup
\ignorespaces
}
+
+\ifluatex%
+\def\exsh@putatend#1{%
+\leavevmode\luatextextdir TRT\unskip{\luatextextdir TLT{\hfill~~#1}}\luatextextdir TLT}%
+\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]{%
- \unskip\nobreak\space\nobreak\hspace*{\fill}\allowbreak\hspace*{\fill}%
- {\pgfkeysvalueof{/exsh/points font}\mbox{(#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}{%