Hallo, ich suche nach einer Möglichkeit, 2 unterschiedliche Lösungen zu Aufgaben anzubieten, nämlich eine ausführliche Lösung und eine Kurzlösung, die z. B. nur einen Hinweis oder einen Ergebniswert enthält. Eine mögliche Lösung habe ich in den Beispielen zum Paket gefunden, hier wird Execise eine Eigenschaft "hint" (von mir umbenannt in shortsolution) hinzugefügt: Öffne in Overleaf
\DeclareExerciseProperty{shortsolution} \newcommand\printshortsolution{% \begin{description} \ForEachUsedExerciseByType{% \def\ExerciseType{##1}% \def\ExerciseID{##2}% \GetExercisePropertyT{shortsolution} {% \item[\XSIMmixedcase{\GetExerciseName}~##3] ####1% }% }% \end{description} } \newcommand\shortsolution[1]{\SetExerciseProperty{shortsolution}{#1}} Da meine Aufgaben mehrere Unteraufgaben in einer Aufzählung a), b), ... enthalten, wäre folgende Lösung hilfreich: Öffne in Overleaf
\documentclass{article} \usepackage{xsim} \begin{document} \begin{exercise} A first example for an exercise. \end{exercise} \begin{shortsolution} A first example for a shortsolution. \end{shortsolution} \begin{solution} A first example for a solution. \end{solution} \end{document} Ich möchte dann entscheiden können, welche Art der Lösung jeweils im Ausdruck landet. gefragt 05 Jan '19, 10:49 RungeZipperer |
So vielleicht – der springende Punkt hier ist die folgende Definition: \usepackage{environ,etoolbox} \NewEnviron{shortsolution}{\SetExpandedExerciseProperty{shortsolution}{\expandonce{\BODY}}} Da Du ja eine Umgebung möchtest, musst Du Dir auch eine definieren. Normalerweise kann man auf den Inhalt einer Umgebung aber nicht einfach so zugreifen. Da wir das aber müssen, um ihn speichern und später aufrufen zu können, müssen wir die Umgebung anders als normal definieren. Das Paket Update 2020: heute brauchen wir \NewDocumentEnvironment{shortsolution}{+b} {\SetExpandedExerciseProperty{shortsolution}{#1}} {}
Der ganze Code: \documentclass{article} \usepackage[T1]{fontenc} \usepackage[no-files]{xsim} \usepackage{needspace} \DeclareExerciseProperty{shortsolution} % we'll use a description list for the shortsolutions: \makeatletter \NewDocumentCommand\printshortsolutions{}{% \def\shortsolitems{}% \ForEachUsedExerciseByType{% \def\ExerciseType{##1}% \def\ExerciseID{##2}% \GetExercisePropertyT{shortsolution} {\g@addto@macro\shortsolitems{\unexpanded{\item[Short Solution ##3] ####1}}}% }% \XSIMifblankF\shortsolitems{% \begin{description} \shortsolitems \end{description} }% } \makeatother \NewDocumentEnvironment{shortsolution}{+b} {\SetExpandedExerciseProperty{shortsolution}{#1}} {} \begin{document} \section{Problems} % set shortsolution through option: \begin{exercise}[subtitle=Pythagoras] This is the first problem. \begin{shortsolution} This is a shortsolution to the first problem. \end{shortsolution} \end{exercise} \begin{solution} This is the solution to the first problem. \end{solution} \begin{exercise}[subtitle=Another Problem] This is the second problem. \end{exercise} \begin{solution} This is the solution to the second problem. \end{solution} % set shortsolution with custom command: \begin{exercise}[subtitle=Yet Another Problem] This is the third problem. \begin{shortsolution} This is a shortsolution to the third problem. \end{shortsolution} \end{exercise} \begin{solution} This is the solution to the third problem. \end{solution} \section{Shortsolutions} \printshortsolutions \section{Solutions} \printsolutions[headings=false] \end{document} beantwortet 05 Jan '19, 11:19 cgnieder Wow...danke...hätte ich mit meinem rudimentären Kenntnissen allerdings tatsächlich nicht hinbekommen!
(05 Jan '19, 12:34)
RungeZipperer
1
@RungeZipperer: Die Antwort gefällt dir also? Dann solltest du entsprechend handeln.
(05 Jan '19, 16:18)
gast3
Wenn ich versuche das zu kompillieren, erhalte ich den Fehler
(06 Jan '21, 10:12)
studentsx
@studentsx Oha. Ja, seit einer Änderung vor einer Weile kann man Eigenschaften von exercises nicht einfach nach der Umgebung setzen. Die
(06 Jan '21, 10:40)
cgnieder
Alles klar, danke! Könnte man eigentlich auch die solution Umgebung in die exercise Umgebung reinziehen (scheint jedenfalls zu funktionieren) oder bringt das irgendwelche Nachteile mit sich, die ich auf Anhieb nicht sehe? Falls die Antwort komplizierter ist, kann ich das auch als neue Frage stellen.
(06 Jan '21, 11:02)
studentsx
@studentsx Davon würde ich abraten, das kann je nach Setup und Verwendung von
(06 Jan '21, 11:19)
cgnieder
Dieselben Nebenwirkungen sind aber bei den
(06 Jan '21, 11:43)
studentsx
@studentsx nein
(06 Jan '21, 11:46)
cgnieder
Ich habe die Antwort mal etwas modernisiert…
(06 Jan '21, 15:21)
cgnieder
Danke. Mir ist eben noch aufgefallen, dass deine Lösung im trivialen Fall, dass das Dokument keine
(06 Jan '21, 22:13)
studentsx
@studentsx stimmt, ist mir gestern auch aufgefallen. Ich habe die Lösung modifiziert für diesen Fall
(08 Jan '21, 10:38)
cgnieder
@cgnieder Wie es scheint, läuft das MWE nach dem letzten Update nicht mehr. Ich erhalte einen Fehler "Missing \endcsname inserted" - die Ursache scheint in der Zeile mit \XSIMifblankF, beim Argument \shortsolitems zu liegen. Leider weiß ich nicht genug von LaTeX, um das Problem zu lösen... Lässt sich das leicht beheben? Danke!
(21 Feb '22, 17:47)
ambr0
Ergebnis 5 von 13
show 8 more comments
|