Как расширить определение перед тем, как предоставить его в качестве аргумента среде exsheet

Как расширить определение перед тем, как предоставить его в качестве аргумента среде exsheet

Я пытаюсь писать листы упражнений по модульному принципу: каждое упражнение имеет свой собственный файл со средами вопросов/решений, предоставленными пакетом exsheets.

Листы упражнений затем \inputs необходимое упражнение. Проблема в том, что я хочу иметь возможность решить, в каждом листе упражнений, хочу ли я печатать решения или нет. Пакет exsheetsпомогает в этом, так как вы можете дать solutionокружениям print=true/falseвозможность выбора.

Поэтому я, естественно, попытался задать переменную в файле с упражнениями, переменную, которая будет считываться каждой средой решения, чтобы решить, следует ли ее печатать или нет, но это не сработало, поскольку, по-моему, заданный параметр не раскрывается достаточно рано.

Вот MWE для файла листа:

\documentclass{article}

\usepackage{exsheets}

\def\printsolutions{true}

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

и вот упражнение:

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

И проблема теперь в том, что latex жалуется, что предоставленный вариант printне является допустимым выбором:

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

Как это можно решить?

Заранее спасибо!

решение1

Определите команду, которая может установить правильный ключ:

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

Внимание:

exsheets не работает с текущей версией expl3. Смотретьhttps://bitbucket.org/cgnieder/exsheets/issues/44/error-latex3-error-variant-form-n

решение2

Вот MWE для файла листа:

\documentclass{article}

\usepackage{exsheets}

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

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

и вот упражнение:

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

Связанный контент