问题描述
我目前正在使用R / exams软件包,特别是使用typeof(Y)
#[1] "double"
typeof(x)
#[1] "double"
函数创建考试,并且问题的顺序是随机的。除一个细节外,其他所有东西都工作正常:exams2nops
选项仅防止段落内的@R_660_6404@。出于我的目的,有必要不要拆分任何练习。在一个文本中,仍然可以只写一个段落(尽管这对清晰性没有帮助)。不幸的是,每当我需要包括一个表时,我都被迫开始一个新的段落,该段落没有“保护”以防止分页。由于随机化,总会有一些副本,其中文本和表格被分成多页。我尝试了.Rmd和.Rnw文件,还尝试集成了某些LaTeX函数,例如samepage = TRUE
和\nopagebreak
,但没有成功。到目前为止,我对LaTeX的经验还不太丰富,在Google的帮助下,我也没有找到解决方案。
这里是我正在谈论的哪种练习的最小示例:
.Rmd
\needspace
.Rnw
Question
========
Some kind of question:
| A | B | C |
|:-:|:-:|:-:|
| 1 | 2 | 3 |
| 1 | 2 | 3 |
| 1 | 2 | 3 |
| 1 | 2 | 3 |
| 1 | 2 | 3 |
Answerlist
----------
* First option
* Second option
* Third option
Some further @R_553_4045@ional text.
我不确定该怎么做。
解决方法
samepage = TRUE
选项仅强制执行{answerlist}
在{samepage}
环境中,而不强制整个{question}
。
完成您想要做的事情的最简单的选择似乎是在{question}
参数中重新定义header =
环境。您可以尝试通过
{samepage}
环境中
exams2nops(...,header = "\\renewenvironment{question}{\\item \\begin{samepage}}{\\end{samepage}}")
这可能必须与段落之间的某些\nopagebreak
命令结合使用。 (请参阅:Make an unbreakable block in TeX)
一个简单的解决方案可能是将每个练习放在自己的页面上,方法是在每个练习的末尾添加一个分页符:
exams2nops(...,header = "\\renewenvironment{question}{\\item}{\\newpage}")
如果您不熟悉上述LaTeX语法:
-
\renewenvironment{foo}{...}{...}
重新定义环境“ foo”。 - 第一个
...
是在环境开始时执行的。 - 第二个
...
在结尾处执行。 - 默认情况下,开始时仅执行
\item
,以增加练习的枚举计数器。 - R中必须使用双反斜杠(例如
\\item
),以便转义反斜杠,因为它们是特殊字符。