私は演習シートをモジュール方式で作成しようとしています。各演習には、パッケージによって提供される質問/解決環境を含む独自のファイルがありますexsheets
。
練習シートは\input
必要な練習になります。問題は、各練習シートで解答を印刷するかどうかを決められるようにしたいことです。パッケージは、環境にオプション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}
そして、ここで問題となるのは、与えられたオプションprint
が有効な選択肢ではないと LaTeX が警告することです。
! 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}