Cómo ampliar la definición antes de darla como argumento al entorno de hoja de cálculo

Cómo ampliar la definición antes de darla como argumento al entorno de hoja de cálculo

Estoy intentando escribir hojas de ejercicios de forma modular: cada ejercicio tiene su propio archivo con los entornos de preguntas/soluciones proporcionados por el exsheetspaquete.

Las hojas de ejercicios \inputson entonces el ejercicio necesario. El problema es que quiero poder decidir, en cada hoja de ejercicios, si quiero imprimir o no las soluciones. El exsheetspaquete ayuda con eso, ya que puedes darle solutionla print=true/falseopción a los entornos.

Entonces, naturalmente intenté configurar una variable en mi archivo de hoja de ejercicios, variable que sería leída por cada entorno de solución para decidir si debería imprimirse o no, pero no funciona, ya que creo que el parámetro proporcionado no se expande temprano. suficiente.

Aquí sería un MWE para el archivo de hoja:

\documentclass{article}

\usepackage{exsheets}

\def\printsolutions{true}

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

y aquí un ejercicio:

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

Y el problema ahora es que Latex se queja de que la opción que se le da printno es válida:

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

¿Cómo debería solucionarse eso?

¡Gracias de antemano!

Respuesta1

Defina un comando que pueda establecer la clave correcta:

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

Atención:

exsheets no funciona con una versión actual de expl3. Verhttps://bitbucket.org/cgnieder/exsheets/issues/44/error-latex3-error-variant-form-n

Respuesta2

Aquí sería un MWE para el archivo de hoja:

\documentclass{article}

\usepackage{exsheets}

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

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

y aquí un ejercicio:

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

información relacionada