我正在嘗試以模組化方式編寫練習表:每個練習都有自己的文件,其中包含包提供的問題/解決方案環境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}
現在的問題是 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}