假设我有两个可能的问题。我只希望其中一个出现在生成的 PDF 中,并且我希望从两个潜在候选中随机选择这一问题。
我认为这就足够了:(最少代码)
\documentclass{article}
\usepackage{tikz}
\begin{document}
\pgfmathifthenelse{\pgfmathrnd >= 0.5}{%
My first question.%
Potentially has more than one line.%
}{%
My second question%
Potentially has more than one line%
}
\end{document}
对我来说这似乎合乎逻辑:我生成一个介于 0 和 1 之间的随机数,如果它大于 0.5,我有一个版本,如果它小于 0.5,我有一个版本,并且由于每次编译时都会生成随机数,所以每次编译时我都会有两个版本之一。
但是,我得到了很多错误。我想也许我不能打破跨行{...}
,\ifthenelse
所以为了理解,我尝试了
\ifthenelse{\pgfmathrnd >= 0.5}{A}{B}
但还是无济于事。我不太明白是否应该这样做,A
但"A"
后者也不起作用。
我也尝试过使用etoolbox
,但没有更好的结果。(据我所知,必须toggle
在序言中声明,最好把我的两个可能的问题放在一个单独的文件中,然后我会把它input
放在主文件中。)
背景以及我为什么要这么做
我正在做一个纸笔实验(可以把它看作一个测验或调查)。问题有两个可能的答案。我希望答案的顺序是随机的,以防止顺序效应。因此我希望问题是随机的
这是问题的正文。
(1)答案 alpha
(2)答案 gamma
请回答(1)或(2)
或者
这是问题的正文。
(1)答案 gamma
(2)答案 alpha
请回答(1)或(2)
假设我的实验是一个文件total.tex
,我的问题在 中questions.tex
。如果我有 10 个受试者,我将在 上循环 10 次\include{questions.tex}
以生成 10 张决策表。我希望这 10 张决策表随机不同,这就是我的问题。
答案1
如果你想坚持使用 PGF 的随机函数
\documentclass{article}
\usepackage{pgffor} % you do not need full tikz for this
\begin{document}
\foreach \i in {1,...,10}{
\pgfmathrandom{2} % store 1 or 2 in \pgfmathresult
\ifnum\pgfmathresult>1%
My first question.%
Potentially has more than one line.%
\else
My second question%
Potentially has more than one line%
\fi
\par
}
\end{document}
请记住,每次编译 PGF 都会生成相同的随机数序列,除非您使用 指定不同的种子\pgfmathsetseed
。每个不同的种子将对应不同的随机序列。
答案2
\ifthenelse
默认情况下不提供该宏,但需要\usepackage{ifthen}
或更好的\usepackage{xifthen}
。但是,其测试不能(轻易)允许进行十进制数比较。
您可以使用 PGF 功能来实现:
\documentclass{article}
\usepackage{tikz}
\newcommand{\first}{My first question.
Potentially has more than one line.}
\newcommand{\second}{My second question.
Potentially has more than one line.}
\begin{document}
\pgfmathparse{rnd >= 0.5 ? "\first" : "\second"}\pgfmathresult
\pgfmathparse{rnd >= 0.5 ? "\first" : "\second"}\pgfmathresult
\pgfmathparse{rnd >= 0.5 ? "\first" : "\second"}\pgfmathresult
\end{document}
当然,您可以为此定义一个宏,但这只作为练习。