Hallo, ich habe ein Anschlussproblem zu dieser und dieser Frage. Folgendes Minimalbeispiel: Öffne in Overleaf
\documentclass{scrartcl} \usepackage[ngerman]{babel} \usepackage[utf8]{inputenc} \usepackage[most]{tcolorbox} \usepackage{xsim} \usepackage{tikz} %Aufgabenumgebung \DeclareExerciseEnvironmentTemplate{klausuraufgabe} {% \tcolorbox[standard jigsaw, opacityback=0, opacityframe=0, coltitle=black, breakable , drop shadow , beforeafter skip = .5\baselineskip , title = \textbf{\GetExerciseName~\GetExerciseProperty{counter}}% \GetExercisePropertyT{subtitle}{ \textit{\PropertyValue}}% \IfInsideSolutionF{% \GetExercisePropertyT{points}{ ($\PropertyValue = \text{\points{\PropertyValue}}$)}% }% ]% } {\endtcolorbox} \DeclareExerciseType{klausuraufgabe}{ exercise-env = aufgabe , solution-env = loesung , exercise-name = Aufgabe , solution-name = Lösung , exercise-template = klausuraufgabe , solution-template = klausuraufgabe } %Punktetabelle \DeclareExerciseTableTemplate{punktetabelle}{% \renewcommand*\arraystretch{2} \XSIMputright\ExerciseTableCode{ \hline Aufgabe & } \ForEachUsedExerciseByType{\XSIMputright\ExerciseTableCode{#3&}} \XSIMputright\ExerciseTableCode{ \LARGE$\sum$ \\ \hline Maximalpunktzahl & } \ForEachUsedExerciseByType{ \XSIMputright\ExerciseTableCode {\XSIMifblankTF{#5}{\printgoal{0}}{\printgoal{#5}} & } } \XSIMputright\ExerciseTableCode{ \TotalExerciseGoal{points}{}{} \\ \hline erreichte Punktzahl & } \ForEachUsedExerciseByType{ \XSIMputright\ExerciseTableCode{&} } \XSIMputright\ExerciseTableCode{\\\hline} \XSIMifeqF{\numberofklausuraufgabes}{0}{ \begin {tabular} {|l|*{\numberofklausuraufgabes}{>{\centering\arraybackslash}p{7mm}|}c|} \ExerciseTableCode \end {tabular} } } \begin{document} \begin{center} \gradingtable[template=punktetabelle] \end{center} \begin{aufgabe}[points=2+(1+4)+1+2] Die Maximalpunktzahl für diese Aufgabe wird korrekt als 10 berechnet und korrekt für die Summe verwendet. \end{aufgabe} \begin{aufgabe}[points=2+(1+4)+(1+2)] Die Maximalpunktzahl für diese Aufgabe wird korrekt als 10 berechnet und korrekt für die Summe verwendet. \end{aufgabe} \begin{aufgabe}[points=(2+1+4)+1+2] Die Maximalpunktzahl für diese Aufgabe wird korrekt als 10 berechnet aber die 2+1+4=7 Punkte der ersten Klammer werden für die Summe nicht berücksichtigt. \end{aufgabe} \end{document} Bei Aufgaben die auf mehreren Ebenen unterteilt werden (z.B. Aufgabe 1 a) i) ii) iii), b) i) ii) c)) würde ich die Punkte gerne auf oberster Ebene mit Klammern abgrenzen. Wenn ich nun den ersten eingetragenen Punktwert in eine Klammer packe führt das dazu, dass diese Punkt zwar zur Maximalpunktzahl der jeweiligen Aufgabe gezählt werden, aber nicht zur endgültigen Summe aller möglichen Punkte. Sobald der erste Punktwert nicht in einer Klammer steht, wird alles korrekt berechnet. (Wie) Lässt sich das beheben? gefragt 28 Jan '19, 19:49 Hirshy |
Das ist ein Bug in xsim, es versucht den Fall abzufangen, dass noch keine Punktzahl bekannt ist, und multipliziert dann mit 0. Versuche das hier: Öffne in Overleaf
\ExplSyntaxOn \cs_set_protected:Npn \xsim_update_goal:nnn #1#2#3 { \xsim_if_goal_exists:nT {#3} { \fp_gadd:cn {g__xsim_goal_#3_fp} { \xsim_get_property:nnn {#1} {#2} {#3} +0 } \fp_gadd:cn {g__xsim_#1_goal_#3_fp} { \xsim_get_property:nnn {#1} {#2} {#3} +0 } } } \ExplSyntaxOff beantwortet 28 Jan '19, 21:36 Ulrike Fischer |