R/exams:防止exams2nops中两段之间的分页
R/exams: prevent page breaks between two paragraphs in exams2nops
我目前正在使用 R/exams 包,特别是使用 exams2nops
功能创建考试,问题的顺序是随机的。除一个细节外,一切正常:samepage = TRUE
选项仅防止段落内的分页符。然而,为了我的目的,有必要不要拆分任何练习。在一个文本中,仍然可以只写一个段落(尽管这对清晰度没有帮助)。不幸的是,每当我需要包含 table 时,我都被迫开始一个新段落,该段落不受分页符的“保护”。由于随机化,总有一些副本的文本和 tables 被拆分到多个页面。我尝试了 .Rmd 和 .Rnw 文件,还尝试集成一些 LaTeX 函数,例如 \nopagebreak
和 \needspace
但没有成功。到目前为止,我对 LaTeX 不太熟悉,而且在 Google 的帮助下我没有找到解决方案。
这里是我所谈论的练习类型的一个最小示例:
.Rmd
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 informational text.
.Rnw
\begin{question}
Some kind of question:
\begin{center}
\begin{tabular}{ccccccr}
$\text{A}$ & $\text{B}$ & $\text{C}$ \
$\text{1}$ & $\text{2}$ & $\text{3}$ \
$\text{1}$ & $\text{2}$ & $\text{3}$ \
$\text{1}$ & $\text{2}$ & $\text{3}$ \
$\text{1}$ & $\text{2}$ & $\text{3}$ \
$\text{1}$ & $\text{2}$ & $\text{3}$ \
\end{tabular}
\end{center}
Some further informational text.
\begin{answerlist}
\item First option
\item Second option
\item Third option
\end{answerlist}
\end{question}
我不确定要尝试什么。
samepage = TRUE
选项仅强制 {answerlist}
在 {samepage}
环境中 - 但不是整个 {question}
.
完成您想做的事情的最简单的选择似乎是 re-define {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}{...}{...}
re-define 环境“foo”。
- 第一个
...
是环境开始执行的
- 第二个
...
在最后执行。
- 默认只在开始时执行
\item
以增加练习的枚举计数器
- R 中需要双反斜杠(例如
\item
)来转义反斜杠,因为它们是特殊字符。
我目前正在使用 R/exams 包,特别是使用 exams2nops
功能创建考试,问题的顺序是随机的。除一个细节外,一切正常:samepage = TRUE
选项仅防止段落内的分页符。然而,为了我的目的,有必要不要拆分任何练习。在一个文本中,仍然可以只写一个段落(尽管这对清晰度没有帮助)。不幸的是,每当我需要包含 table 时,我都被迫开始一个新段落,该段落不受分页符的“保护”。由于随机化,总有一些副本的文本和 tables 被拆分到多个页面。我尝试了 .Rmd 和 .Rnw 文件,还尝试集成一些 LaTeX 函数,例如 \nopagebreak
和 \needspace
但没有成功。到目前为止,我对 LaTeX 不太熟悉,而且在 Google 的帮助下我没有找到解决方案。
这里是我所谈论的练习类型的一个最小示例:
.Rmd
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 informational text.
.Rnw
\begin{question}
Some kind of question:
\begin{center}
\begin{tabular}{ccccccr}
$\text{A}$ & $\text{B}$ & $\text{C}$ \
$\text{1}$ & $\text{2}$ & $\text{3}$ \
$\text{1}$ & $\text{2}$ & $\text{3}$ \
$\text{1}$ & $\text{2}$ & $\text{3}$ \
$\text{1}$ & $\text{2}$ & $\text{3}$ \
$\text{1}$ & $\text{2}$ & $\text{3}$ \
\end{tabular}
\end{center}
Some further informational text.
\begin{answerlist}
\item First option
\item Second option
\item Third option
\end{answerlist}
\end{question}
我不确定要尝试什么。
samepage = TRUE
选项仅强制 {answerlist}
在 {samepage}
环境中 - 但不是整个 {question}
.
完成您想做的事情的最简单的选择似乎是 re-define {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}{...}{...}
re-define 环境“foo”。- 第一个
...
是环境开始执行的 - 第二个
...
在最后执行。 - 默认只在开始时执行
\item
以增加练习的枚举计数器 - R 中需要双反斜杠(例如
\item
)来转义反斜杠,因为它们是特殊字符。