英単語テストの順番を並び替えたい

英単語テストの順番を並び替えたい

- tanaka kanata の投稿
返信数: 5
初めて質問させていただきます。初心者です。

英単語テストの問題の順番だけを並び替えたいのですが,知恵を貸していただけないでしょうか。
TeXの環境としては,TeXlive2018,pLaTeX(ptex2pdf)を使用しています。
理想としては,例えば,

・・・プリアンブル・・・
\begin{document}
\begin{shuffle}
\mondaitokotae{agree with ...}{...に賛成する}
\mondaitokotae{have a cold}{風邪をひく}
\mondaitokotae{I'm hungry.}{私はおなかがすいた}
\mondaitokotae{hogehoge}{ほげほげ}
\end{shuffle}
\end{document}

と入力すると,出力の1ページ目には,
1. have a cold
2. I'm hungry.
3. agree with ...
4. hogehoge
で,2ページ目に,その番号に対応して
1. 風邪をひく
2. 私はおなかがすいた
3. ほげほげ
4. ...に賛成する
と出力されるような環境を作りたいorそのような環境が定義されているパッケージはあるかどうかを知りたいです。
まだマクロの定義については全然無知ですが,ご教授いただければ幸いです。
tanaka kanata への返信

Re: 英単語テストの順番を並び替えたい

- 和田 勇 の投稿
% 時間が十二分無いのでご希望のようなマクロ記述では無いのですが
%
% latex random question answer で検索すると以下のページの情報があり
% https://tex.stackexchange.com/questions/215776/shuffling-questions-in-exam
%
% その中に以下の URL があり
% https://www.overleaf.com/project/52e3f06d3cf27e7a050000ee
% それを見ると examdesign を使うとできそうだったので
%
% texdoc examdesign
%
% で調べながら試してみました。
%
% さてご希望の \mondaitokotae{Q}{A} のようにするため以下のような
% マクロを記述してみましたが
%
% \newcommand{\mondaitokotae}[2]{
% \begin{question}
% #1
% \begin{answer}
% #2
% \end{answer}
% \end{question}
% }
%
% 以下のエラーになってしまいます。 :-( \def マクロでも同じです :-(
%
% LaTeX Error: Lonely \item--perhaps a missing list environment.


\documentclass[10pt]{examdesign}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{pifont}
\SectionFont{\large\sffamily}
\Fullpages
\ContinuousNumbering

\DefineAnswerWrapper{}{}
\NumberOfVersions{3} % パターン数かな?三種類のパターンが生成されるみたいです。

\class{フォーラム\\
一般フォーラム\\
英単語テストの順番を並び替えたい
}

\begin{document}

\begin{shortanswer}[title={Interesting questions...}, rearrange=yes]

\begin{question}
{agree with ...}
\begin{answer}
...に賛成する
\end{answer}
\end{question}

\begin{question}
{have a cold}
\begin{answer}
{風邪をひく}
\end{answer}
\end{question}

\begin{question}
{I'm hungry.}
\begin{answer}
{私はおなかがすいた}
\end{answer}
\end{question}

\begin{question}
{hogehoge}
\begin{answer}
{ほげほげ}
\end{answer}
\end{question}

\end{shortanswer}

\end{document}
和田 勇 への返信

Re: 英単語テストの順番を並び替えたい

- 前田 一貴 の投稿
> LaTeX Error: Lonely \item--perhaps a missing list environment.

shortanswer 環境では冒頭に指示文章が書けるようになっているようですが
(「次の英文を和訳しなさい」のように),このために 最初の \begin{question} が出現するまでの
トークン(指示文章)を一度全て保存しておいて,最初の \begin{question} から先にある
問題を読み取り,保存しておいたトークン列と並び替えた問題を出力するという動作を
するようです.よって,\begin{question} より前に \mondaitokotae があると,
これもトークン列に保存されて(問題として読み込まれずに指示文章として)出力しようとして
おかしなことになるみたいです.

とりあえず,\get@instructions というマクロを無効化しておくとこの冒頭の指示文章を
保存する処理をなくせるので,\mondaitokotae が意図通りに動くようになります.
もちろん,今度は指示文章が書けなくなってしまいますが…….
面倒でなければ,元々の examdesign の使用法通りに question 環境を使うのが
無難ではないかと思います.

\documentclass[10pt]{examdesign}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{pifont}
\SectionFont{\large\sffamily}
\Fullpages
\ContinuousNumbering

\DefineAnswerWrapper{}{}
\NumberOfVersions{3} % パターン数かな?三種類のパターンが生成されるみたいです。

\class{フォーラム\\
  一般フォーラム\\
  英単語テストの順番を並び替えたい
}

\def\mondaitokotae#1#2{%
\begin{question}
#1
\begin{answer}
#2
\end{answer}
\end{question}
}

\makeatletter
\let\get@instructions\relax    % 冒頭の指示文章を書かない
\makeatother

\begin{document}

\begin{shortanswer}[title={Interesting questions...},rearrange=yes]
  \mondaitokotae{agree with ...}{...に賛成する}
  \mondaitokotae{have a cold}{風邪をひく}
  \mondaitokotae{I'm hungry.}{私はおなかがすいた}
  \mondaitokotae{hogehoge}{ほげほげ}
\end{shortanswer}
\end{document}
前田 一貴 への返信

Re: 英単語テストの順番を並び替えたい

- 和田 勇 の投稿
前田さん、解析と説明ありがとうございました。

試すと以下のように \begin{question} が一つでもあれば以降マクロは使えるのですね。

\begin{shortanswer}。。。
\begin{question} % マクロ使わず最初は question で記述
Are you happy?
\begin{answer}
楽しんでる?
\end{answer}
\end{question}
\mondaitokotae{agree with ...}{...に賛成する} % 以降マクロ使用可
\mondaitokotae{I love LaTeX }{LaTeX いいね}
....
\end{shortanswer}


でも記述が不統一なのは気持ち悪いので ...
\let\get@instructions\relax の代わりにもなる折衷案を考えてみました。

以下のように question を外して質問と答えだけをマクロ定義しておくと
ちょっぴり記述が少なくなります。

\def\mondaitokotae#1#2{#1\begin{answer}#2\end{answer}}
% 面倒なので一行にしてしまいました。

\begin{question}
\mondaitokotae{have a cold}{風邪をひく}
\end{question}
\begin{question}
\mondaitokotae{I'm hungry.}{私はおなかがすいた}
\end{question}
\begin{question}
\mondaitokotae{hogehoge}{ほげほげ}
\end{question}

前田 一貴 への返信

Re: 英単語テストの順番を並び替えたい

- tanaka kanata の投稿
和田様,前田様,ありがとうございます。

examdesign というクラスがあったことは初めて知りました。これについては今後のプリント作成に大いに役立ちそうなので勉強してみます。

今のところはエラーも起きず,目標としていたプリントが作成できそうです。

非常に助かりました。ありがとうございます。