Ich habe mir folgende Aufgabenumgebung aus der Dokumentation erstellt:

Öffne in Overleaf
\documentclass{scrartcl}

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

%Aufgabenumgebung
\DeclareExerciseEnvironmentTemplate{tcolorbox}
{%
\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}{ % notice the space
(%
\printgoal{\PropertyValue}
\IfExerciseGoalSingularTF{points}
{\XSIMtranslate{point}}
{\XSIMtranslate{points}}%
)%
}%
}%
]%
}
{\endtcolorbox}

\DeclareExerciseType{klausuraufgabe}{
exercise-env = aufgabe ,
solution-env = loesung ,
exercise-name = Aufgabe ,
solution-name = Loesung ,
exercise-template = tcolorbox ,
solution-template = tcolorbox
}

\begin{document}

\begin{aufgabe}[points=2+2+2]
 Diese Aufgabe soll drei Unteraufgaben haben, welche jeweils 2 Punkte bringen.
\end{aufgabe}

\end{document}

Die 2+2+2 Punkte werden automatisch in 6 Punkte umgewandelt, kann man auch die einzelnen Summanden dazu nehmen, d.h. anstatt 6 Punkte steht da 2+2+2 Punkte oder auch 2+2+2=6 Punkte?

gefragt 17 Okt '17, 17:31

Hirshy's gravatar image

Hirshy
73133645
Akzeptiert-Rate: 0%


Update Februar 2021

Meine ursprüngliche Antwort hat mit einem aktuellen xsim eigentlich keine Gültigkeit mehr. Hauptsächlich gilt sie nicht mehr, weil „goal“-Eigenschaften inzwischen grundsätzlich berechnet werden, um auch Punkte, die mit \addpoints vergeben werden korrekt zur Summe aufzuaddieren.

Mit einem kleinen Umweg kann man die Eingabe bei points=... allerdings wieder erhalten: indem man eine zweite Eigenschaft definiert, die keine „goal“-Eigenschaft ist, und die dann ein Alias der points wird:

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

Dieser Ansatz ist allerdings nicht mit oben erwähnten \addpoints kombinierbar.

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{xsim}

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

\begin{exercise}[points=2+2+2]
  Diese Aufgabe soll drei Unteraufgaben haben, welche jeweils 2 Punkte bringen.
\end{exercise}
\begin{exercise}[points=4]
  Diese Aufgabe bringt nur 4 Punkte.
\end{exercise}

\end{document}

alt text

ursprüngliche Antwort

Das machst Du quasi absichtlich, indem Du

\GetExercisePropertyT{points}{ %
  (\printgoal{\PropertyValue}%
  \IfExerciseGoalSingularTF{points}
    { \XSIMtranslate{point}}
    { \XSIMtranslate{points}}%
)}%

verwendest. \printgoal verwendet intern nämlich \ExerciseGoalValuePrint und das berechnet den Wert.

Wenn Du statt dessen einfach \printgoal weglässt, wird die Eingabe einfach so verwendet:

\GetExercisePropertyT{points}{ %
  ($\PropertyValue$%
  \IfExerciseGoalSingularTF{points}
    {\,\XSIMtranslate{point}}
    {\,\XSIMtranslate{points}}%
)}%

Mit

$\PropertyValue = \text{\points{\PropertyValue}}$

bekommst Du auch die Addition (\text benötigt amsmath oder amstext).


Übrigens, Deine ursprüngliche Variante bekommst Du auch, indem Du einfach \points{\PropertyValue} verwendest. Die Definitionen von \printgoal und \points lauten nämlich:

\NewDocumentCommand \printgoal {m} {\ExerciseGoalValuePrint{#1}{}{}}

\NewDocumentCommand \points {m} {%
  \ExerciseGoalValuePrint{#1}{\,\XSIMtranslate{point}}{\,\XSIMtranslate{points}}%
}

Wenn nur gelegentlich Punkte durch + getrennt eingegeben werden, dann kann man auch darauf testen. Das richtige Werkzeug ist schnell definiert:

\ExplSyntaxOn
\NewDocumentCommand \XSIMifinstrTF {mmmm}
  { \tl_if_in:onTF {#1} {#2} {#3} {#4} }
\ExplSyntaxOff

Dann kann man das so einsetzen:

\GetExercisePropertyT{points}
  {%
    \XSIMifinstrTF{\PropertyValue}{+}
      {$\PropertyValue = {}$}{}%
    \points{\PropertyValue}%
  }%
Permanenter link

beantwortet 17 Okt '17, 18:09

cgnieder's gravatar image

cgnieder
22.1k243463
Akzeptiert-Rate: 60%

bearbeitet 21 Feb '21, 09:28

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:

×19

gestellte Frage: 17 Okt '17, 17:31

Frage wurde gesehen: 6,520 Mal

zuletzt geändert: 21 Feb '21, 09:28