Como expandir a definição antes de fornecê-la como argumento para o ambiente exsheet

Como expandir a definição antes de fornecê-la como argumento para o ambiente exsheet

Estou tentando escrever planilhas de exercícios de forma modular: cada exercício possui seu próprio arquivo com ambientes de perguntas/soluções conforme fornecido pelo exsheetspacote.

As folhas de exercícios \inputsão então o exercício necessário. O problema é que quero poder decidir, em cada planilha de exercícios, se quero ou não imprimir as soluções. O exsheetspacote ajuda nisso, pois você pode dar solutionessa print=true/falseopção aos ambientes.

Então, naturalmente tentei definir uma variável no meu arquivo de planilha de exercícios, variável que seria lida por cada ambiente de solução para decidir se deveria ser impressa ou não, mas não funcionou, pois acho que o parâmetro fornecido não é expandido antecipadamente suficiente.

Aqui estaria um MWE para o arquivo da planilha:

\documentclass{article}

\usepackage{exsheets}

\def\printsolutions{true}

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

e aqui um exercício:

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

E o problema agora é que o látex reclama que a opção dada printnão é válida:

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

Como isso deveria ser resolvido?

Desde já, obrigado!

Responder1

Defina um comando que possa definir a chave correta:

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

Atenção:

exsheets não funciona com uma versão expl3 atual. Verhttps://bitbucket.org/cgnieder/exsheets/issues/44/error-latex3-error-variant-form-n

Responder2

Aqui estaria um MWE para o arquivo da planilha:

\documentclass{article}

\usepackage{exsheets}

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

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

e aqui um exercício:

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

informação relacionada