Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Verbesserte Punktetabellen #316

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

Rdeisenroth
Copy link
Contributor

@Rdeisenroth Rdeisenroth commented Jun 1, 2021

Seit Version 3.13 ist es ja bequem möglich, Punktetabellen für Examen zu erstellen. Leider ist diese Funktionalität noch sehr eingeschränkt, da lediglich \thetask{} sowie die Gesamtpunktzahl einer Aufgabe gespeichert werden, und Subtasks gar nicht berücksichtigt werden.

Deswegen hab ich mich mal daran gesetzt, diese Funktionalität deutlich zu erweitern. Bei meiner Implementierung werden die folgenden Eigenschaften jedes Tasks gespeichert:

  • Titel
  • \thetask{}
  • \value{task}
  • \taskformat{}
  • credit
  • points
  • pointsauto (boolean)
  • solution (boolean)
  • subtasks

Für Subtasks wird jeweils bis auf Solution und Pointsauto auch alles gespeichert. Dadurch sind neben den Standarttabellen auch komplexere Punktetabellen mit mehreren Aufgabengruppen und gleichen Aufgabennummern möglich, wie zum Beispiel:
Screenshot_20210601_200936

% Relevante Zeile im Aux-File (Testexample.aux)
\ptxcd@LoadTaskProperties {1={title={Normaler Titel},thetask={1},taskformat={G1{}},credit={},pointsauto={false},points={1},solution={false},},2={title={\texorpdfstring {\textmd {Fancy} Title \texttt {Font} \Huge Style\underline {s}}{Fancy Title Font Styles}},thetask={2},taskformat={G2{}},credit={},pointsauto={false},points={3},solution={false},},3={subtasks={1={title={\texorpdfstring {\Lenny }{( ͡° ͜ʖ ͡°)}},credit={},points={3},thesubtask={a)},subtaskformat={a)\hskip .5em\relax },},2={title={ein Subtasktitel},credit={},points={3},thesubtask={b)},subtaskformat={b)\hskip .5em\relax },},},title={Task mit Subtasks},thetask={3},taskformat={G3{}},credit={},pointsauto={true},points={6},solution={false},},4={title={Ganze Zahlen I},thetask={1},taskformat={H1{}},credit={},pointsauto={false},points={1},solution={false},},5={subtasks={1={title={Ganzzahladdition auf \texorpdfstring {$\mathbb {N}$}{N}},credit={},points={2},thesubtask={a)},subtaskformat={a)\hskip .5em\relax },},2={title={\texttt {Endspurt}},credit={},points={4},thesubtask={b)},subtaskformat={b)\hskip .5em\relax },},},title={Ganze Zahlen II},thetask={2},taskformat={H2{}},credit={},pointsauto={true},points={6},solution={false},},}

Improved-Grading-Tables-example.zip

Die Implementierung ist allerdings noch nicht ganz fertig:

  • Da die Implementierung ursprünglich für meine Erweiterung der tudaexercise gedacht war, sind die Variablennamen noch nicht angepasst.
  • Commands wie \getTaskProperty{} sind nicht Expandable, das ist vorallem für das rechnen mit Punktzahlen lästig
  • Aktuell wird \value{task}(bzw \value{subtask}) als eindeutige ID jeder Übung verwendet, d.h. sollte der counter zurückgesetzt werden, werden auch die Properties überschrieben

Würde mich auf jeden Fall über ne Rückmeldung freuen :D

@TeXhackse
Copy link
Collaborator

Ich gucks mir an, grundsätzlich hatte ich mich damals bewusst dagegen entschieden die subtasks einzeln auszugeben, weil der Mehrwert einer Übersicht ja meistens ist, dass sie übersichtlich bleibt.

Aber ich gucks mir durch und weiß das Engagement definitiv zu schätzen. Ich werde wahrscheinlich aber erst zum Wochenende dazu kommen.

@TeXhackse
Copy link
Collaborator

Ich habs durchgesehen und jetzt auch noch etwas drüber nachgedacht, und irgendwie bin ich mir nicht ganz sicher, ob man pauschal alle Werte speichern sollte, so oder so wäre es sinnvoller bei einer property-list zu bleiben und die zwischenzuspeichern, und dort nur die einträge einzutragen, die tatsächlich inhalt haben.

Ich würde mal die Struktur von meiner Seite anlegen, weil ich glaube das geht schneller als den Vorschlag zu reduzieren. Wir können dann gerne mal darüber sprechen, wieso ich die Implementierung so für umständlich halte.

@Rdeisenroth Rdeisenroth marked this pull request as draft September 25, 2022 10:46
@TeXhackse
Copy link
Collaborator

Ich weiß… ist ewig her … irgendwie gab es keine Zeit dafür und da das ja eine Feature Ergänzung ist, die nicht unter Pflege fällt, hab ich einfach zu wenig Freizeit.

Es ist jetzt so, dass \getPoints kompatibel zu den subtasks ist und damit die iteration an sich erlaubt. Die property list ist dadurch nicht wirklich verschachtelt. Das ist auch nicht nötig, da das mapping erstmal nur über die äußere liste läuft. Es wäre aber möglich das subtask-mapping noch zu erweitern, das wäre dann der nächste schritt.

@Rdeisenroth
Copy link
Contributor Author

Rdeisenroth commented Apr 24, 2023

Ich weiß… ist ewig her … irgendwie gab es keine Zeit dafür und da das ja eine Feature Ergänzung ist, die nicht unter Pflege fällt, hab ich einfach zu wenig Freizeit.

Alles gut, ich hab den PR damals mit 4 Monaten LaTeX-Erfahrung gemacht um expl3 zu lernen, heute würde ich das definitiv auch anders lösen xD

Ich denke auch nicht dass man die erweiterten Metadaten der Tasks/Subtasks unbedingt braucht für den standart-usecase.

Es wäre aber möglich das subtask-mapping noch zu erweitern, das wäre dann der nächste schritt.
Wäre auf jeden Fall sinnvoll, gerade für das Erstellen von Klausuren und so. Man könnte es ja theoretisch opt-in machen wegen Laufzeit und ggf. für jeden Task/Subtask eine eigene property-Liste anlegen oder so um nesting zu vermeiden

@TeXhackse
Copy link
Collaborator

Ah gut -> Es fehlt aktuell wenn ich das richtig überblicke nur, dass der iterator über alle subtasks mit läuft. Da muss ich intern noch zwei kleinigkeiten ändern, aber das kommt dann im nächsten release auch. Ein Bugfix soll nur heute noch raus, da schaff ich das gerade nicht vorher.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants