Eine vorerst letzte Frage von mir zu diesem tollen Paket. Ich habe die Möglichkeit gefunden, einen Grading Table zu erstellen, der passt aber nicht zu dem angestrebten Layout weshalb ich eine eigene, händische Lösung suche. Bisher stehe ich hier:

Ö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
}
\NewDocumentCommand\printcompletepoints{}{%
  \TotalExerciseGoals{points}
    {\,\XSIMtranslate{}}
    {\,\XSIMtranslate{}}%
}
\newcommand{\klauAufg}{5}                       %Anzahl der Aufgaben
\begin{document}
\begin{center}
\begin{tikzpicture}
%1 Spalte
\draw (0,0) rectangle (4,-1) node[midway,left]{Aufgabe};
\draw (0,-1) rectangle (4,-2) node[midway]{Maximalpunktzahl};
\draw (0,-2) rectangle (4,-3) node[midway]{erreichte Punktzahl};
\foreach \x in {1,...,\klauAufg}{
\draw (3+\x,0) rectangle (4+\x,-1) node[midway]{\x};
\draw (3+\x,-1) rectangle (4+\x,-2) node[midway]{\x};
\draw (3+\x,-2) rectangle (4+\x,-3);
}
\draw (4+\klauAufg,0) rectangle (5+\klauAufg,-1) node[midway]{\Huge$\Sigma$};
\draw (4+\klauAufg,-1) rectangle (5+\klauAufg,-2) node[midway]{\printcompletepoints};
\draw (4+\klauAufg,-2) rectangle (5+\klauAufg,-3);
\end{tikzpicture}
\end{center}
\begin{aufgabe}[points=2+(1+4)+1+2]
Dies ist eine Aufgabe.
\end{aufgabe}
\begin{aufgabe}[points=3+1+2]
Aufgabe 2
\end{aufgabe}
\begin{aufgabe}[points=1+1+1]
Aufgabe 3
\end{aufgabe}
\begin{aufgabe}[points=6+1+2]
Aufgabe 4
\end{aufgabe}
\begin{aufgabe}[points=7+1]
Aufgabe 5
\end{aufgabe}
\end{document}

Der Befehl \klauAufg gibt die Aufgabenanzahl an, anhand derer die Tabelle gezeichnet wird. Für die Anzeige der Gesamtpunktzahl ohne "Punkte" habe ich hier eine Lösung gefunden und modifiziert. Was mir noch fehlt ist die Eingabe der Gesamtpunktzahl jeder einzelnen Aufgabe in der zweiten Zeile. (Wie) Kann ich die Punkte jeder einzelnen Aufgabe in der foreach-Schleife gezielt abgreifen und als node eintragen?

gefragt 17 Okt '17, 22:00

Hirshy's gravatar image

Hirshy
7112643
Akzeptiert-Rate: 0%


Ich würde empfehlen, xsim's \gradingtable doch zu verwenden. Du kannst Dir nämlich auch da mit Hilfe sogenannter Templates ein eigenes Layout basteln. Das folgende Template geht davon aus, dass Du nur den Typ klausuraufgabe verwendest:

\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}
  }
}

Mit \gradingtable[template=punktetabelle] kannst Du das dann verwenden.

Komplettes Beispiel:

\documentclass{scrartcl}

\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[most]{tcolorbox}
\usepackage{xsim}
\usepackage{tikz}

\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
}

\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]
  Dies ist eine Aufgabe.
\end{aufgabe}
\begin{aufgabe}[points=3+1+2]
  Aufgabe 2
\end{aufgabe}
\begin{aufgabe}[points=1+1+1]
  Aufgabe 3
\end{aufgabe}
\begin{aufgabe}[points=6+1+2]
  Aufgabe 4
\end{aufgabe}
\begin{aufgabe}[points=7+1]
  Aufgabe 5
\end{aufgabe}

\end{document}

alt text

Update 31.01.2021, xsim Version 0.20

Mit Version 0.20 oder neuer kann folgende Lösung verwendet werden, bei der eine Alias-Eigenschaft verwendet wird, um die „Punkteberechnung“ zu speichern:

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[most]{tcolorbox}
\usepackage{xsim}
\usepackage{tikz}

\DeclareExerciseProperty{punkte}
\DeclareExercisePropertyAlias{punkte}{points}

\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}{ ($\GetExerciseProperty{punkte} = \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
}

\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]
  Dies ist eine Aufgabe.
\end{aufgabe}
\begin{aufgabe}[points=3+1+2]
  Aufgabe 2
\end{aufgabe}
\begin{aufgabe}[points=1+1+1]
  Aufgabe 3
\end{aufgabe}
\begin{aufgabe}[points=6+1+2]
  Aufgabe 4
\end{aufgabe}
\begin{aufgabe}[points=7+1]
  Aufgabe 5
\end{aufgabe}

\end{document}
Permanenter link

beantwortet 18 Okt '17, 09:42

cgnieder's gravatar image

cgnieder
20.9k193463
Akzeptiert-Rate: 60%

bearbeitet 31 Jan, 12:12

Super, danke! Sobald ich Zeit habe, werde ich weiter damit spielen und überlegen ob und wie sich das für uns einsetzen lässt und lästige Arbeit abnimmt!

(19 Okt '17, 22:20) Hirshy

Hat sich mit der aktuellen Version (texlive 2020) etwas geändert? texlive 2018 kompiliert wie gewünscht durch und erstellt die Tabelle, mit 2020 macht zwar keinen Fehler, die Punktetabelle führt aber die einzelnen Aufgaben nicht mehr auf.

(06 Jun '20, 17:36) Hirshy

@cgnieder Hat sich da mittlerweile etwas ergeben, das Problem wurde in https://texwelt.de/fragen/26748/punkte-in-xsim-addieren#26750 ja bis zum Urlaub aufgeschoben? ;)

(19 Jan, 13:43) Hirshy
1

@Hirshy ich habe eben v0.20 veröffentlicht und die Antwort hier um die dann zu verwendende Lösung ergänzt

(31 Jan, 12:13) cgnieder

@cgnieder danke für das Update, leider funktionieren mit v0.20 andere Sachen nicht mehr so wie sie sollten (z.B. haben Aufgaben die in einer collection gesammelt und später ausgegeben werden keine Aufgabennummern mehr). Aus Zeitgründen bin ich daher vorerst auf texlive2018 zurückgegangen, bis ich meine Vorlage nochmal genauer angehen und das Problem identifizieren kann.

(19 Feb, 08:36) Hirshy

@Hirshy die Änderung an den Collections ist 1. dokumentiert und 2. seit Monaten angekündigt, auch schon in den vorherigen Manuals :|

(19 Feb, 09:36) cgnieder

@Hirshy und wenn Dinge nicht wie dokumentiert funktionieren, dann erstelle bitte einen Issue auf https://github.com/cgnieder/xsim/issues/ Kommentare hier bekomme ich nur durch Zufall mit und vor allem vergesse ich sie schnell wieder

(19 Feb, 09:40) cgnieder

@cgnieder das war auch nicht wirklich als Kritik am Paket bzw. den Änderungen daran gemeint, eher als grundsätzliche Rückmeldung zu diesem Punkteproblem. Ich habe die Vorlage vor 3 Jahren für unseren Lehrstuhl erstellt und seitdem nicht mehr verändert, da sie ihren Zweck sehr gut erfüllt. Ich habe dann nur von Kollegen von Problemen gehört, nachdem Sie zB auf texlive2020 gewechselt haben und die Vorlage trotzdem weiter nutzen wollen. Bisher habe ich aber keine Zeit gefunden mich damit zu befassen und zu korrigieren, daher der "Rückschritt" auf texlive2018

(19 Feb, 10:39) Hirshy

@Hirshy OK. Allerdings hat es mit diesem Beispiel gar nichts zu tun, da hier keine Collections verwendet werden. Abgesehen davon liest sich „leider funktionieren mit v0.20 andere Sachen nicht mehr so wie sie sollten“ durchaus, als ob das Paket Bugs hätte. Von Anfang an hat xsim übrigens diesen „Verwenden auf eigene Gefahr“-Satz gleich zu Beginn des Manuals drin: Please be aware that xsim is in an experimental state […]. Many aspects may change […] until a stable version~1 will be reached.

(20 Feb, 09:57) cgnieder
Ergebnis 5 von 9 show 4 more comments
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×15

gestellte Frage: 17 Okt '17, 22:00

Frage wurde gesehen: 3,972 Mal

zuletzt geändert: 20 Feb, 09:57