exsheet 환경에 인수로 제공하기 전에 정의를 확장하는 방법

exsheet 환경에 인수로 제공하기 전에 정의를 확장하는 방법

저는 모듈 방식으로 연습 시트를 작성하려고 합니다. 각 연습에는 패키지에서 제공하는 질문/해결책 환경이 포함된 자체 파일이 있습니다 exsheets.

그러면 연습 시트가 \input필요한 연습이 됩니다. 문제는 각 연습문제 시트에서 답을 인쇄할지 여부를 결정할 수 있기를 원한다는 것입니다. 패키지 는 환경에 옵션을 exsheets제공할 수 있으므로 이를 수행하는 데 도움이 됩니다 .solutionprint=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}

이제 문제는 라텍스가 주어진 옵션이 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}

관련 정보