我正在尝试以模块化的方式编写练习表:每个练习都有自己的文件,其中包含包提供的问题/解决方案环境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}