Ich habe heute auf texlive 2021 aktualisiert und will die Änderungen an xsim (mein Stand war bisher noch auf 2019) in eine Vorlage einarbeiten. Dabei tritt das Problem auf, dass einmal "fertige" Aufgaben bei weiteren Durchläufen nicht geändert werden können, ohne die erzeugten Dateien zu löschen. Konkret an folgendem Minimalbeispiel:

\documentclass{article}
\usepackage{xsim}

\DeclareExerciseCollection{test}

\xsimsetup{
  collect
}

\collectexercises{test}
\begin{exercise}[points=1]
Aufgabe 1.
\end{exercise}

\begin{exercise}[points=2]
Aufgabe 2.
\end{exercise}


\begin{exercise}[points=3]
Aufgabe 3. %Mehr Aufgabentext.
\end{exercise}

%\begin{exercise}[points=4]
%Aufgabe 4.
%\end{exercise}

\collectexercisesstop{test}

\begin{document}

\gradingtable

\printcollection{test}

\end{document}

Nach zwei Durchläufen erhalte ich ein Dokument mit 3 Aufgaben und ausgefüllter Punktetabelle. Will ich anschließend aber in Aufgabe 3 zusätzlich noch "Mehr Aufgabentext" haben, wird dieser bei einem weiteren (bzw. beliebig vielen) Durchläufen nicht angezeigt. Auch Änderungen von Punkten werden nicht berücksichtigt. Auch wenn ich eine weitere, neue Aufgabe hinzufüge, wird diese zwar nach zwei Durchläufen aufgeführt und in der Punktetabelle berücksichtigt, Änderungen an den anderen Aufgaben werden aber auch dann nicht übernommen. Auch bei der Verwendung von [use-aux] [clear-aux], [no-files], [use-files] als Paketoption in allen möglichen sinnvollen Kombination bleibt dieses Verhalten bestehen.

Löschen der .aux-Datei führt dann letztendlich dazu, dass alles neu und mit Änderungen korrekt übernommen wird, das will ich aber wenn möglich nicht bei jeder Änderung machen müssen. Übersehe ich eine Einstellung oder ist das ein (bekanntes) Problem?

Edit: vorgreifend auf ein anderes Problem was ich gerade noch habe und welches möglicherweise hier mit zusammenhängt: ich werde im Anschluss wie hier die Punkte als einzelne Summanden anzeigen lassen. Wenn ich nun die Collection hinter \begin{document} setze, kompiliere und anschließend einen weiteren Summanden bei einer Aufgabe einfüge, dann wird zwar die Punktsumme korrekt neu berechnet, der eingefügte Summand aber nicht dargestellt.

\documentclass{article}
\usepackage{xsim}

\DeclareExerciseCollection{test}

\xsimsetup{
  collect
}

\DeclareExerciseProperty{subpoints}
\DeclareExercisePropertyAlias{subpoints}{points}

\DeclareExerciseEnvironmentTemplate{custom}{%
  \subsection*{\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
    \GetExercisePropertyT{points}{%
      \quad
      \textnormal{%
        \XSIMifeqF{\GetExerciseProperty{subpoints}}{\PropertyValue}
          {$\GetExerciseProperty{subpoints} ={}$}%
        $\printgoal{\PropertyValue}$%
      }%
    }%
  }%
}{\par}

\xsimsetup{exercise/template=custom}

\begin{document}

\collectexercises{test}
\begin{exercise}[points=1+2+3]
Aufgabe 1. 
\end{exercise}

\begin{exercise}[points=2]
Aufgabe 2.
\end{exercise}

\begin{exercise}[points=3]
Aufgabe 3. Mehr Aufgabentext. Und noch mehr Text.
\end{exercise}

\gradingtable

\printcollection{test}

\end{document}

Dieses Beispiel liefert mir 3 Aufgaben mit einer Gesamtpunktzahl von 11. Wenn ich nun z.B. in Aufgabe einen weiteren Summanden "+1" einfüge, wird die neue Punktsumme korrekt als 7 bzw. 12 berechnet, aber der zusätzliche Summand wird nicht angezeigt.

Wenn das nichts mit dem eigentlichen Problem zu tun hat, kann ich das gerne wieder entfernen, da es sich um fehlerhafte Aktualisierung des Aufgabentextes handelt, habe ich es aber vorerst einmal hier hinzugefügt.

Edit zu Ulrikes erstem Kommentar: Verschieben der Collection hinter \begin{document} wie von Ulrike vorgeschlagen hat unerwünschte Auswirkungen auf die Punktetabelle:

\documentclass{article}
\usepackage{xsim}

\DeclareExerciseCollection{test}

\xsimsetup{
  collect
}

\begin{document}

\collectexercises{test}
\begin{exercise}[points=1]
Aufgabe 1.
\end{exercise}

\begin{exercise}[points=2]
Aufgabe 2.
\end{exercise}


\begin{exercise}[points=3]
Aufgabe 3. %Mehr Aufgabentext.
\end{exercise}

%\begin{exercise}[points=4]
%Aufgabe 4.
%\end{exercise}

\collectexercisesstop{test}

\gradingtable

\printcollection{test}

\end{document}

gefragt 09 Jul '21, 17:20

Hirshy's gravatar image

Hirshy
7313445
Akzeptiert-Rate: 0%

bearbeitet 09 Jul '21, 21:18

verschiebe die exercise hinter \begin{document}.

(09 Jul '21, 19:11) Ulrike Fischer

@Ulrike Fischer habe ich gerade versucht, das hat aber leider unerwünschte Auswirkungen auf die Punktetabelle, in welcher die einzelnen Aufgaben dann nicht mehr angezeigt werden.

(09 Jul '21, 21:02) Hirshy

@Ulrike Fischer ich habe deinen Vorschlag zur einfacheren Ansicht oben einmal umgesetzt. Außerdem habe ich gerade ein weiteres Problem ergänzt, welches möglicherweise mit meiner Fragestellung zusammenhängt (falls nicht, kann ich das natürlich wieder entfernen und anschließend als neue Frage einstellen)

(09 Jul '21, 21:19) Hirshy

  • Die exercise-Umgebungen müssen nach \begin{document} verwendet werden.
  • Außerdem muss \gradingtable derzeit leider vor dem Sammeln der Aufgaben eingesetzt werden, da die Tabelle sonst nicht richtig gefüllt wird. Das ist so nicht gewollt und ein klarer Bug. Bis ich das löse, wird es aber sicher noch einige Zeit dauern. Edit 19.02.2022: Der Bug ist gelöst in v0.21, wie durch austesten hier auf der Seite nachvollziehbar ist.

Diese beiden Punkte erfüllt läuft das Beispiel unten problemlos durch:

\documentclass{article}
\usepackage{xsim}

\DeclareExerciseCollection{test}
\DeclareExerciseProperty{subpoints}
\DeclareExercisePropertyAlias{subpoints}{points}

\DeclareExerciseEnvironmentTemplate{custom}{%
  \subsection*{\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}%
    \GetExercisePropertyT{points}{%
      \quad
      \textnormal{%
        \XSIMifeqF{\GetExerciseProperty{subpoints}}{\PropertyValue}
          {$\GetExerciseProperty{subpoints} ={}$}%
        $\printgoal{\PropertyValue}$%
      }%
    }%
  }%
}{\par}

\xsimsetup{
  exercise/template = custom ,
  collect
}

\begin{document}

\gradingtable

\collectexercises{test}
\begin{exercise}[points=1+2+3]
  Aufgabe 1.
\end{exercise}

\begin{exercise}[points=2]
  Aufgabe 2.
\end{exercise}


\begin{exercise}[points=3]
  Aufgabe 3. Mehr Aufgabentext.
\end{exercise}

\begin{exercise}[points=4]
  Aufgabe 4.
\end{exercise}
\collectexercisesstop{test}

\printcollection{test}

\end{document}
Permanenter link

beantwortet 16 Jan, 18:36

cgnieder's gravatar image

cgnieder
22.0k213463
Akzeptiert-Rate: 60%

bearbeitet 19 Feb, 11:41

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:

×16

gestellte Frage: 09 Jul '21, 17:20

Frage wurde gesehen: 1,329 Mal

zuletzt geändert: 19 Feb, 11:41