我正在研究简单的LyX 2.2 中的考试类布局。很多东西都运行良好,尤其是LatexType Item_Environment
LyX 布局中的样式。然而,我不知道如何处理多项选择环境,因为
\choice
\CorrectChoice
本质上是\item
中的两种不同可能性(对于 LyX 布局)。在 LyX 中LatexType Item_Environment
似乎不可能有两种不同的定义。可以说,只是 的一个特例,但改变 Exam 类需要做很多工作……ItemCommand
\CorrectChoice
\choice
\CorrectChoice
我意识到如果只是将一个\choice
可选参数设置为 true(或 1),例如,会容易得多\choice[1]
。也许有办法将其破解回\CorrectChoice
LyX 生成 LaTeX 之后和编译 LaTeX 之前?
我见过一些黑客用etoolbox
包裹,但我找不到任何明显的东西。我承认我不是 TeX 黑客。如果知道这是可能的,那就太好了。
答案1
原来是基本的 LaTeX 黑客技术(重写宏)。以下是我根据以下建议完成的:这个答案:
- 在LyX中,
ItemCommand
将Item_Environment
\mychoice
exam.layout
为项目添加一个可选参数,如下所示。这是我正在开发的文件中的示例:Style Multiple_Choice_Answers_(checkboxes) CopyStyle Enumerate Category Answers LatexType Item_Environment LatexName checkboxes ItemCommand mychoice LabelType Enumerate LabelSep xx Argument item:1 MenuString "Mark correct" LabelString "✓" Decoration Classic EndArgument End
在这种情况下,多项选择答案(带复选框)有一个可选的“标记正确”插入(可以包含任何内容)。它将生成
\mychoice[]
相当于一个项目的内容。在文档前言中,需要
\mychoice
根据可选参数的存在(指示正确的选择)重写一些命令。正如评论中指出的那样,我们应该在文件中使用Preamble
...构造,因为这会使此更改也与布局保持一致。此外,最好让 LyX 来管理(我喜欢 LyX 的众多原因之一是它能很好地管理 LaTeX 的复杂性)。EndPreamble
.layout
makeat...
Preamble % hack to rewrite \mychoice or \mychoice[] to \choice or \CorrectChoice respectively \def\mychoice{\@ifnextchar[{\@with}{\@without}} \def\@with[#1]{\CorrectChoice} \def\@without{\choice} EndPreamble
LyX 生成以下代码:
\begin{checkboxes}
\mychoice Here's an answer
\mychoice Here's another
\mychoice[] This is the correct answer.
\mychoice This is not correct.
\end{checkboxes}
以下是 PDF 格式的输出(显示答案):