So erweitern Sie die Definition, bevor Sie sie als Argument an die Exsheet-Umgebung weitergeben

So erweitern Sie die Definition, bevor Sie sie als Argument an die Exsheet-Umgebung weitergeben

Ich versuche, die Übungsblätter modular aufzubauen: Jede Übung hat eine eigene Datei mit den Frage-/Lösungsumgebungen, wie sie das exsheetsPaket vorgibt.

Die Übungsblätter \inputsind dann die benötigten Übungen. Das Problem ist, dass ich bei jedem Übungsblatt entscheiden können möchte, ob ich die Lösungen ausdrucken möchte oder nicht. Das exsheetsPaket hilft dabei, da man solutionUmgebungen diese print=true/falseOption geben kann.

Also habe ich natürlich versucht, in meiner Übungsblattdatei eine Variable festzulegen, die von jeder Lösungsumgebung gelesen wird, um zu entscheiden, ob sie gedruckt werden soll oder nicht, aber das funktioniert nicht, da ich denke, dass der angegebene Parameter nicht früh genug erweitert wird.

Hier wäre ein MWE für die Blattdatei:

\documentclass{article}

\usepackage{exsheets}

\def\printsolutions{true}

\begin{document}
    Some text.  
    \input{Exercise1}
\end{document

und hier eine Übung:

\begin{question}
    Question
\end{question}
\begin{solution}[print=\printsolutions]
    Solution
\end{solution}

Und das Problem besteht nun darin, dass Latex sich beschwert, dass die angegebene Option printkeine gültige Auswahl ist:

! LaTeX error: "kernel/key-choice-unknown"
! 
! Key 'exsheets/solution/print' accepts only a fixed set of choices.

Wie soll das gelöst werden?

Dank im Voraus!

Antwort1

Definieren Sie einen Befehl, der den richtigen Schlüssel festlegen kann:

\documentclass{article}


\usepackage{exsheets}

\ExplSyntaxOn
\NewDocumentCommand\setsolutionprint { m }
{
 \keys_set:nn { exsheets / solution}{ print = #1 }
}

\ExplSyntaxOff



\begin{document}

    Some text.
\setsolutionprint{true}

    \input{exercise1}

\end{document}

Aufmerksamkeit:

exsheets funktioniert nicht mit einer aktuellen expl3-Version. Siehehttps://bitbucket.org/cgnieder/exsheets/issues/44/error-latex3-error-variant-form-n

Antwort2

Hier wäre ein MWE für die Blattdatei:

\documentclass{article}

\usepackage{exsheets}

\newcommand\Exchange[2]{#2#1}%
\def\printsolutions{true}

\begin{document}
    Some text.  
    \input{Exercise1}
\end{document}

und hier eine Übung:

\begin{question}
    Question
\end{question}
\expandafter\Exchange\expandafter{\printsolutions]}{\begin{solution}[print=}%
    Solution
\end{solution}

verwandte Informationen